2013-02-12 18 views
1

我有我的Zend_Form,有时候,其中一个字段应该被隐藏,并且用户看不到。当我在我的控制器中调用窗体时,有没有办法,我可以更改其中一个要隐藏的字段?在控制器Zend在控制器中更改元素类型

$form->removeElement('my-element-name'); 

感谢 Kousha

回答

3

您可以使用删除的元素。

您也可以创建两个表单,一个覆盖另一个表单,其中子女调用$this->remove('my-element-name')

或者,您可以让窗体构造函数接受一个布尔值$flag,它确定是否将该字段添加到窗体。

所以,你可以看到,很多不同的方式来构造它。

要将该字段更改为“隐藏”类型(即<input type="hidden">)是另一回事,但我不确定这就是您的意思/需要/想要的。

+1

另一种方法是扩展窗体类并消除不需要的元素。 – 2013-02-12 05:54:37

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。

希望这会有所帮助!