Элемент запрещенной формы не отправляется

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

$this->username->setAttrib('readonly', 'true');

Ответ 3

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

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