Jak „odblokować” pole w formularzu CakePHP, gdy jest ono częścią stowarzyszenia hasMany
Mam formę, która reprezentuje aRewardModifier
tabela w naszej bazie danych. ŻeRewardModifier
hasMany
RewardOption
.
Mój formularz ma taką strukturę (obrazek):
Tak więcRewardModifier
może mieć wiele elementów na stronie, każda z wielomaRewardOption
przedmiotów.
Problem
Problem polega na tym, że użytkownicy mogą usuwać sekcje tego formularza za pomocą Javascript, który zasadniczo usuwa go z DOM. Gdy to zrobią, przerywa komponent bezpieczeństwa, ponieważ pola POST nie pasują do tokena dostarczonego podczas generowania strony.
Teraz używamunlockedFields
poradzić sobie z tym wcześniej:
$this->Security->disabledFields = array(
'PrjRewardModifier.reward_id',
'PrjRewardModifier.title',
'PrjRewardModifier.option_type',
'PrjRewardOption.description',
'PrjRewardOption.modifier',
'PrjRewardOption.amount'
);
wiem todisabledFields
jest przestarzałe, ale na razie używamy tego.
Kiedy debuguję opublikowane dane formularza wSecurityComponent
, Widzę następujące rzeczy:
(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'
Muszę wiedzieć, jak edytować przekazywane daneunlockedFields
tak, że może zignorować te pola, które są wpisane dla relacji ma wiele.
Dzięki.