已提交已禁用的表单元素

时间:2011-10-24 12:24:22

标签: zend-framework zend-form-element

我需要从表中显示一些预先存在的数据,但需要禁用它们以防止用户编辑它们。所以我禁用了它们

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

当我提交表单时,我发现表单元素根本没有提交,只是因为它被禁用了。我在测试删除禁用选项时确认了这一点。

发生了什么事?难道我做错了什么?怎么解决这个问题?

3 个答案:

答案 0 :(得分:21)

这是设计使然,禁用的元素不会随表单一起提交。

你在做什么实际上是一种空洞的做法,无论你对该形式做什么,最终用户都可以编辑 。你根本无法信任表单输入 - 甚至隐藏字段 - 不被篡改。

您最好的选择是向用户显示信息并在提交表单后再次加载;最糟糕的是将它存放在会话中。

答案 1 :(得分:17)

这对我来说就像一个魅力。 它可以防止元素被编辑并将其传递给帖子。

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

答案 2 :(得分:1)

我使用隐藏元素处理这些类型的场景。添加隐藏元素,其内容与禁用元素中的内容相同。发布表单时,使用隐藏元素中的值。

要小心使用者可以在提交表单之前使用Firebug或其他工具修改隐藏元素的值。在处理之前,请务必再次检查表单值。