我有我的Zend_Form,有时候,其中一个字段应该被隐藏,而且用户看不到。有没有办法在我的控制器中调用表单时,我可以更改其中一个要隐藏的字段?
由于 Kousha
答案 0 :(得分:3)
您可以删除元素:
$form->removeElement('my-element-name');
在控制器中。
您还可以创建两个表单,一个覆盖另一个表单,其中孩子调用$this->remove('my-element-name')
。
或者,您可以使表单构造函数接受一个布尔值$flag
,确定是否将该字段添加到表单中。
所以,正如你所看到的,有很多不同的方法来构建它。
要将该字段更改为“隐藏”类型之一(即<input type="hidden">
)是另一回事,但我不确定这是您的意思/需要/想要的。
答案 1 :(得分:2)
我的最佳解决方案是在需要隐藏元素时为其添加特定类。它可能不是完美的解决方案,但让我解释一下。
首先,在Zend Form中很难从一种元素类型切换到另一种元素类型。你的元素实际上是类。所以文本是Zend_Form_Element_Text - 因此它不仅仅像更改'type'属性一样简单。
如果元素必须保留在表单上(所以,不要像上面的答案那样删除它),你唯一的其他选择就是用CSS隐藏它。
需要隐藏时,请尝试以下代码:
$element = $form->getElement('MyElement');
$newClass = trim($element->getAttrib('class') . ' hidden');
$element->setAttrib('class', $newClass);
然后,当然,为.hidden类创建CSS。
希望这有帮助!