2

我正在尝试将 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 定义?

谢谢!

4

4 回答 4

2

如果它是隐藏的并且它应该在整个请求中保持隐藏,而不是您应该将元素类型从 Select 更改为 Hidden。如果您需要稍后显示它(使用 JS),那么您也应该使用 JS 隐藏它,以便没有 JS 的用户可以访问它。您可以隐藏元素(假设使用 jQuery 和包装每个元素的标签):

$('#elementId').parent().hide(); 
//or 
$('#elementId').parent().children().hide() // if you want the container visible
于 2012-05-18T20:53:42.553 回答
1

像这样的东西应该工作。

$this->getElement('junior_accounts')->removeDecorator('Label');

没测试过,里面可能有错别字

或者,如果您只想隐藏它:

$this->getElement('junior_accounts')->getDecorator('Label')->setOption('style', 'display: none');
于 2012-05-17T20:45:17.960 回答
1

您可以访问Zend_Form_Elementvia的标签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');
}
于 2012-05-17T20:47:57.017 回答
0

可能删除元素将是一个选项。如果是这样,我是这样做的:

$form->get('product')->remove('version');

在验证表单之前:

$form->getInputFilter()->get('product')->get('version')->setRequired(FALSE);
于 2018-01-31T11:29:04.200 回答