Отключенный элемент формы не отправлен - PullRequest
10 голосов
/ 24 октября 2011

Мне нужно было показать некоторые существующие данные из таблицы, но мне нужно было отключить их, чтобы пользователь не мог их редактировать.Поэтому я отключил их

$form -> getElement("elementname") -> setAttrib("disable", true);

Когда я отправлял форму, я обнаружил, что элемент формы вообще не отправляется, просто потому, что он был отключен.Я подтвердил это, когда протестировал удаление опций отключения.

Что происходит?Я делаю что-то неправильно?Как это решить?

Ответы [ 3 ]

21 голосов
/ 24 октября 2011

Это дизайн, отключенные элементы не отправляются вместе с формой.

То, что вы делаете, на самом деле является пустой практикой, независимо от того, что вы делаете с этой формой, вместо нее будет редактироваться конечным пользователем. Вы просто не можете доверять вводу формы - даже скрытым полям - чтобы не быть подделанными.

Лучше всего просто показать информацию пользователю и загрузить ее снова после отправки формы; в худшем случае сохраните это в сеансе.

17 голосов
/ 25 мая 2012

Это сработало как очарование для меня.Он предотвращает редактирование элемента и пропускает его через сообщение.

$this->username->setAttrib('readonly', 'true');
1 голос
/ 24 октября 2011

Я обрабатываю сценарии такого типа, используя скрытые элементы. Добавьте скрытый элемент с тем же содержимым, что и в вашем отключенном элементе. Когда форма размещена, используйте значение из скрытого элемента.

Но будьте осторожны , чтобы использование могло изменить значение скрытого элемента с помощью Firebug или других инструментов перед отправкой формы. Всегда проверяйте значения формы перед обработкой.

...