Zend Form在控制器中更改元素类型

时间:2013-02-12 02:09:30

标签: zend-framework hidden

我有我的Zend_Form,有时候,其中一个字段应该被隐藏,而且用户看不到。有没有办法在我的控制器中调用表单时,我可以更改其中一个要隐藏的字段?

由于 Kousha

2 个答案:

答案 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。

希望这有帮助!