我需要展示一些来自表格的预先存在的数据,但需要将其禁用以防止用户编辑。因此,我将它们禁用了。
$form -> getElement("elementname") -> setAttrib("disable", true);
当我提交表单时,我发现这个表单元素根本没有被提交,只是因为它被禁用了。当我测试移除禁用选项时,我确认了这一点。
发生了什么?我做错了什么?如何解决这个问题?
我需要展示一些来自表格的预先存在的数据,但需要将其禁用以防止用户编辑。因此,我将它们禁用了。
$form -> getElement("elementname") -> setAttrib("disable", true);
当我提交表单时,我发现这个表单元素根本没有被提交,只是因为它被禁用了。当我测试移除禁用选项时,我确认了这一点。
发生了什么?我做错了什么?如何解决这个问题?
这是设计上的考虑,被禁用的元素不会与表单一起提交。
你现在所做的实际上是无效的,无论你对表单做什么,都会被最终用户编辑。你根本不能相信表单输入——即使是隐藏字段——不会被篡改。
你最好的选择是向用户显示信息,并在表单提交后重新加载它;在最坏的情况下,将其存储在会话中。
这对我来说非常有效。它可以防止元素被编辑并通过post方法传递。
$this->username->setAttrib('readonly', 'true');