Элемент запрещенной формы не отправляется
Мне нужно было показать некоторые предыдущие данные из таблицы, но мне нужно было отключить их, чтобы пользователь не редактировал их. Поэтому я отключил их
$form -> getElement("elementname") -> setAttrib("disable", true);
Когда я отправляю форму, я узнал, что элемент формы вообще не передается, просто потому, что он был отключен. Я подтвердил это, когда тестировал удаление отключенных опций.
Что происходит? Я делаю что-то неправильно? Как это решить?
Ответы
Ответ 1
Это по дизайну, отключенные элементы не отправляются вместе с формой.
То, что вы делаете, на самом деле является нулевой практикой, независимо от того, что вы делаете с этой формой, так как она будет доступна для редактирования конечным пользователем. Вы просто не можете доверять вводу формы - даже скрытые поля - чтобы не подделываться.
Лучше всего просто отобразить информацию пользователю и загрузить ее снова после отправки формы; в худшем случае сохраните его в сеансе.
Ответ 2
Это работало как прелесть для меня.
Это предотвращает редактирование элемента и передает его через сообщение.
$this->username->setAttrib('readonly', 'true');
Ответ 3
Я обрабатываю эти типы сценариев, используя скрытые элементы. Добавьте скрытый элемент с тем же содержимым, что и в отключенном элементе. Когда форма отправлена, используйте значение из скрытого элемента.
Но будьте осторожны, чтобы использование могло изменять значение скрытого элемента с помощью Firebug или других инструментов перед отправкой формы. Всегда проверяйте значения формы перед обработкой.