開発情報・ナレッジ

投稿者: SPIRERS ナレッジ向上チーム 2023年2月3日 (金)

更新フォームで固定値を登録する方法

登録フォームブロックでは自動登録の機能を利用して固定値を登録することができますが、更新フォームブロックには自動登録の機能がございません。(ver.2.22時点)
この記事では、更新フォームブロックで固定値を登録する方法を3つ紹介いたします。

hidden属性で送信する方法

inputタグのtype属性に"hidden"を指定することで、ページ上に表示せずにデータを送信することができます。

ただし、画面上に表示されていないだけで、ソースから値を確認/改ざんすることができてしまうため、改ざんされても影響が少ないフィールドだけにしか使用しないように注意してください。
設定方法
下記のソースを更新フォームブロックの入力ステップのソースに追加し、「XX」の部分を固定値を登録するフィールドのフィールドIDに変更してください。
フィールドIDの確認場所
body
<sp:input-field name="f0XX"></sp:input-field>
<input type="hidden" th:name="${fields['f0XX'].name}" value="登録する固定値">

hidden属性でキーを送信し、DBトリガで更新する方法

hidden属性でレコードアクションを発動させるためのキーを送信し、条件と一致した場合にDBトリガで固定値を格納する方法です。

固定値の登録をDBトリガで行うため、任意の値に改ざんされるリスクを回避することができます。
手順1:レコードアクション発動用のフィールドを追加する
レコードアクションの発動条件として使うテキストフィールドを用意します。
必須制約やユニーク制約などは設定しないでください。
表示名や識別名は自由に変更していただいて問題ありません。
手順2:レコードアクションを設定する
フォームから更新をするDBの更新トリガにレコードアクションを設定します。
レコードアクション
アクション先 自DB
アクション先への操作 更新
処理
発動条件 指定する
経路条件:一部の経路 > フォーム
簡易条件:指定する
レコードアクション発動キー|等しい|
XXXXXXXX

XXXXXXXXはパスワード生成ツールなどを使用しランダムな文字列を設定してください。
処理タイプ 更新
処理マッピング 固定値を登録するフィールド =
'登録する固定値'

レコードアクション発動キー: = ''
※フィールドタイプごとの固定値格納方法は、DBトリガ レコードアクションの関数設定まとめをご覧ください。
エラー処理 全てエラー終了
処理設定画面キャプチャ(クリックして拡大)
手順3:更新フォームで固定値を送信する
「1. hiddenタグで送信する」と同じ方法で、レコードアクション発動キーを登録します。
ここでは、レコードアクションを発動させるためのレコードアクション発動キーをhidden属性で送信するように設定します。
下記のソースを更新フォームブロックの入力ステップのソースに追加してください。

XXXXXXXX」の部分は、発動条件で設定した文字列と同じ文字列に変更し、
XX」の部分は、レコードアクション発動キーのフィールドIDに変更してください。
フィールドIDの確認場所
body
<sp:input-field name="f0XX"></sp:input-field>
<input type="hidden" th:name="${fields['f0XX'].name}" value="XXXXXXXX">

フォーム送信後にAPIで更新する方法

フォーム送信後の完了画面にて、APIで固定値を更新する方法です。
サーバ側からの通信で値を格納するため、ソース上から値を改ざんされるリスクがありません。

参照フィールドをAPIで更新するサンプルプログラムでは、参照フィールド以外のフィールドにも値を登録することが可能なので、そのまま流用することができます。
設定方法
参照フィールドをAPIで更新するサンプルプログラムの内容通りに設定を進めていただき、25行目 - 28行目の部分を以下のように読み替えて設定をしてください。
25行目 - 28行目
$dataPATCH = array(
  "固定値を登録するフィールドの識別名" => "登録する固定値",
);
設定例
$dataPATCH = array(
  "status" => "2",
);

解決しない場合はこちら コンテンツに関しての
要望はこちら