RewardModifier
データベース内のテーブルを表すフォームがあります。それRewardModifier
hasMany
RewardOption
。
私のフォームは次のように構成されています(画像):
そのため、RewardModifier
はページ上に多くの要素を持つことができ、それぞれに多くのRewardOption
アイテムがあります。
問題
問題は、ユーザーが Javascript を使用してこのフォームのセクションを削除できることです。これにより、基本的にフォームが DOM から削除されます。これを行うと、POST されたフィールドがページの生成時に提供されたトークンと一致しないため、セキュリティ コンポーネントが壊れます。
今、私はunlockedFields
以前にこれを処理するために使用していました:
$this->Security->disabledFields = array(
'PrjRewardModifier.reward_id',
'PrjRewardModifier.title',
'PrjRewardModifier.option_type',
'PrjRewardOption.description',
'PrjRewardOption.modifier',
'PrjRewardOption.amount'
);
非推奨であることは承知していdisabledFields
ますが、当面はそれを使用しています。
で投稿されたフォーム データをデバッグするとSecurityComponent
、次のように表示されます。
(int) 8 => 'PrjRewardModifier.0.reward_id',
(int) 9 => 'PrjRewardModifier.0.title',
(int) 10 => 'PrjRewardModifier.0.option_type',
(int) 11 => 'PrjRewardModifier.0.PrjRewardOption.0.description',
(int) 12 => 'PrjRewardModifier.0.PrjRewardOption.0.modifier',
(int) 13 => 'PrjRewardModifier.0.PrjRewardOption.0.amount'
unlockedFields
hasMany 関係のキーになっているこれらのフィールドを無視できるように、渡されるデータを編集する方法を知る必要があります。
ありがとう。