У меня есть форма в CakePHP, которая имеет два ввода текста в режиме реального времени.Каждый из них обновляет значение скрытого поля, когда пользователь выбирает результат.Модель называется Record
, и задействованы следующие атрибуты:
budget_id
program_id
concept_id
Я создал форму , используя FormHelper следующим образом:
...
<?php echo $this->Form->create('Record') ?>
<h1>Create a record</h1>
<?php echo $this->Form->hidden('Record.budget_id', array('value' => $budget['Budget']['id'])) ?>
<?php echo $this->Form->hidden('Record.program_id') ?>
<?php echo $this->Form->input('Record.program_id_search', array(...)) ?>
<?php echo $this->Form->hidden('Record.concept_id') ?>
<?php echo $this->Form->input('Record.concept_id_search', array(...)) ?>
<?php echo $this->Form->submit('Send') ?>
<?php echo $this->Form->end(); ?>
...
Как видите, поля ввода, в которых хранятся атрибуты модели, скрыты.Окна реального поиска настраиваются с помощью плагина автозаполнения jQuery.
Следуя рекомендациям руководства CakePHP, я отключил два дополнительных поля в методе beforeFilter
, так что компонент Security игнорирует их, и форма проходит проверку:
public function beforeFilter() {
$this->Security->disabledFields = array(
'Record.program_id_search',
'Record.concept_id_search',
);
}
Кажется, что CakePHP злится всякий раз, когда я изменяю значение скрытых входных данных из Javascript, и он отправляет меня в метод blackhole .Это нормально, согласно документации.
Но меня удивляет то, что компонент Security продолжает игнорировать мои disabledFields
настройки.
Я искал в нескольких веб-источниках, и все указывают на disabledFields
варианты.Но это не работает для меня.
Есть предложения?
Спасибо !!
ОБНОВЛЕНИЕ
Я нашел обходной путьно это действительно ужасноЯ заменил скрытые поля ввода обычными полями выбора, но установив свойство отображения CSS как none
.
Таким образом, компонент безопасности больше не жалуется, и пользователь продолжает просматривать пару live-поискаящики.
Я не понимаю, почему изменение выбора с помощью Javascript это нормально, но изменение скрытого ввода - нет.