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