1

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

谢谢库沙

4

2 回答 2

3

您可以使用以下方法删除元素:

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

在控制器中。

您还可以创建两种形式,一种覆盖另一种,孩子在其中调用$this->remove('my-element-name').

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

所以,正如你所看到的,有很多不同的方式来构建它。

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

于 2013-02-12T05:33:03.503 回答
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。

希望这可以帮助!

于 2013-02-12T16:13:25.113 回答