我正在尝试将display:none属性设置为Zend_Element_Checkbox。我设法隐藏了复选框本身。不幸的是,标签仍在显示。
这是我的代码:
$this->addElement('Select', 'junior_accounts', array(
'label' => 'Junior (15yrs & under)',
'multiOptions' => $personNumberList,
'tabindex' => $tabIndex++,
));
$this->getElement('junior_accounts')->setAttribs(array('style' => 'display: none'));
是否有任何编程方法,或者我需要设置元素的类并添加适当的CSS定义?
谢谢!
答案 0 :(得分:1)
这样的事情应该有用。
$this->getElement('junior_accounts')->removeDecorator('Label');
Haven未对其进行测试,因此可能会出现错字
或者如果您只想隐藏它:
$this->getElement('junior_accounts')->getDecorator('Label')->setOption('style', 'display: none');
答案 1 :(得分:1)
您可以通过Zend_Form_Element
访问Zend_Form_Element::getDecorator()
的标签。然后,您可以设置装饰器的style
选项来控制其CSS属性。
$label = $this->getElement('junior_accounts')->getDecorator('Label');
if ($label instanceof Zend_Form_Decorator_Abstract) {
$label->setOption('style', 'display: none');
}
答案 2 :(得分:1)
如果隐藏它并且它应该在请求中隐藏,那么您应该将元素类型从Select更改为Hidden。如果你需要稍后(使用JS)显示它,你应该使用JS隐藏它,使没有JS的用户可以访问它。你可以隐藏元素(假设使用jQuery和包装每个元素的标签):
$('#elementId').parent().hide();
//or
$('#elementId').parent().children().hide() // if you want the container visible
答案 3 :(得分:0)
可能会删除该元素是一个选项。如果是这样,我这样做了:
$form->get('product')->remove('version');
在验证表格之前:
$form->getInputFilter()->get('product')->get('version')->setRequired(FALSE);