質問

投稿者:yaesu
登録日:2025年9月24日(水)

「更新フォーム」にて更新完了後、「レコードアイテム」画面に遷移したい

■質問 「更新フォーム」にて更新完了後、「レコードアイテム」画面に遷移することは可能ですか? 可能であれば、設定方法を教えてください。 ■現在までの試行錯誤 (1)レコードリスト画面から、レコードのリンクをクリックすると、レコードアイテム画面に遷移できました。   リンク設定により、「引用レコード:自DBレコード」としています。 (2)レコードアイテム画面から、リンクをクリックすると、更新フォームに遷移できました。   <a th:href="|${pages['p0#####']?.path ?: '/404'}?${siteClient.record[#].linkParam}|">でリンクしています。 (3)(完了動作:サイト内ページとして、レコードアイテム画面を設定した上で)   更新フォームにて送信後、エラーになりました。   「500 Internal Server Error The server encountered an internal error.」 (4)(完了動作:サイト内ページとして、レコードリスト画面を設定した上で)   更新フォームにて送信後、レコードリスト画面に遷移できました。 ※つまり、レコード更新後、レコード一覧画面には戻れましたが、更新したレコード詳細表示画面には戻れんせんでした。 ※更新完了時に、「引用レコード:自DBレコード」とする設定は、見つかっていません。

更新日:2025年9月26日(金)
いいね

    ベストアンサー

  • >「更新フォーム」にて更新完了後、「レコードアイテム」画面に遷移することは可能ですか?可能であれば、設定方法を教えてください。 更新完了画面でmeta refreshで0秒後に別ページにジャンプするようにいただければ、自動的に「レコードアイテム」画面へ遷移させることが可能です。 下記方法にて実装可能となります。 なお、更新対象のDBとレコードリストのDBが同一か異なるかによって、 遷移先のレコードアイテムのレコード値の取得方法が異なりますので、お客様の状況に合わせて設定方法をご確認ください。 ◇共通 1.「更新フォーム」のページPHPタブでisCompletedStep();にて完了ページかどうかを取得しthymeleafに取得した値を格納 2.「更新フォーム」のページheadタブにmeta refreshを設置 3.meta refreshのth:if="${cp.result.value['isCompStep']}" にPHPで取得したisCompletedStep()を格納 4.th:contentのcp.result.value['record']に遷移先のレコードアイテムのレコード値を格納 ◇更新対象DBとレコードアイテムDBが同一の場合 a-1.PHPの$SPIRAL->getParam('record');にて、更新対象レコードのパラメータを取得 a-2.「a-1」で取得した値を「◇共通 4」のcp.result.value['record']に格納 ◇更新DBとレコードアイテムDBが異なる場合 b-1.レコードアイテム画面にて、$SPIRAL->getParam('record');を取得 b-2.更新ページに遷移するURLのパラメータに「b-1」で取得した値を追加 b-3.更新フォーム画面にて、「b-2」で追加したURLパラメータの値を取得 b-4.「b-3」で取得した値を「◇共通 4」のcp.result.value['record']に格納

    2025年9月25日(木)

コメント

  • >「更新フォーム」にて更新完了後、「レコードアイテム」画面に遷移することは可能ですか?可能であれば、設定方法を教えてください。 更新完了画面でmeta refreshで0秒後に別ページにジャンプするようにいただければ、自動的に「レコードアイテム」画面へ遷移させることが可能です。 下記方法にて実装可能となります。 なお、更新対象のDBとレコードリストのDBが同一か異なるかによって、 遷移先のレコードアイテムのレコード値の取得方法が異なりますので、お客様の状況に合わせて設定方法をご確認ください。 ◇共通 1.「更新フォーム」のページPHPタブでisCompletedStep();にて完了ページかどうかを取得しthymeleafに取得した値を格納 2.「更新フォーム」のページheadタブにmeta refreshを設置 3.meta refreshのth:if="${cp.result.value['isCompStep']}" にPHPで取得したisCompletedStep()を格納 4.th:contentのcp.result.value['record']に遷移先のレコードアイテムのレコード値を格納 ◇更新対象DBとレコードアイテムDBが同一の場合 a-1.PHPの$SPIRAL->getParam('record');にて、更新対象レコードのパラメータを取得 a-2.「a-1」で取得した値を「◇共通 4」のcp.result.value['record']に格納 ◇更新DBとレコードアイテムDBが異なる場合 b-1.レコードアイテム画面にて、$SPIRAL->getParam('record');を取得 b-2.更新ページに遷移するURLのパラメータに「b-1」で取得した値を追加 b-3.更新フォーム画面にて、「b-2」で追加したURLパラメータの値を取得 b-4.「b-3」で取得した値を「◇共通 4」のcp.result.value['record']に格納

    • いいね
    2025年9月25日(木)
  • また、コードブロックにheadに記述するmetaタグを記載しましたので、併せてご確認をお願いします。 なお、フォームの完了動作のリダイレクト/サイト内ページについてはurlパラメータを設定することができません。 そのため、上記meta refreshを使用した方法にて実装いただきますようお願いいたします。 パラメータの取得方法については下記をご確認ください。 ▼ページのPHP設定 > setTHValue($key, $value) https://support.spiral-platform.com/function/function-site-manage/6898.html#setTHValuekey_value ▼フォームブロックのステップ取得用PHPクラス > 更新フォームブロックのステップ取得 https://support.spiral-platform.com/function/function-site-manage/block/7144.html#%E6%9B%B4%E6%96%B%E2%80%A6 ご確認よろしくお願いします。

    headタグに記述するコード
    <meta
        th:if="${cp.result.value['isCompStep']}" 
        http-equiv="refresh"
        th:content="'0; URL=' + |${pages['p085716']?.path ?: '/404'}?record=${cp.result.value['record']}|"
    >
    • いいね
    2025年9月25日(木)
  • yaesu

    ご回答ありがとうございます。 おかげさまで、「更新対象DBとレコードアイテムDBが同一の場合」について成功しました。 (PHP) $fForm = $SPIRAL->getUpdateForm("pedit"); $SPIRAL->setTHValue("isComp", $form->isCompletedStep()); $SPIRAL->setTHValue("record",$SPIRAL->getParam('record')); (head) <th:block th:if="${cp.result.value['isComp']}==true"> <meta http-equiv="refresh" th:content="'0; URL=' + |${pages['p014541']?.path ?: '/404'}?record=${cp.result.value['record']}|"> </th:block>

    • いいね
    2025年9月26日(金)
  • ご確認いただきましてありがとうございます。 動作いただけたとのことなによりでございます。 作成していく中でご不明点がございましたら、 お気軽にクエスチョンボードをご活用ください。 引き続きよろしくお願いいたします

    • いいね
    2025年9月26日(金)
あなたもログインして、
回答してみませんか?