如何从提交按钮中删除标签装饰器

时间:2009-07-28 19:23:25

标签: zend-framework zend-form

在我的表格中,我有这段代码;

// Add the submit button
$element = $this->addElement('submit', 'submit', array(
    'ignore'   => true,
    'label' => 'Add new material'
));
$element->removeDecorator('label');

然而,表单仍然使用标签之间的标签元素进行渲染。

我做错了什么?

4 个答案:

答案 0 :(得分:17)

这对我有用:

$this->addElements(array(  
  new Zend_Form_Element_Submit('submit', array(  
    'label' => 'Save'  
  ))  
));  
$element = $this->getElement('submit');  
$element->removeDecorator('DtDdWrapper');

我做了print_r($element);以找出$element

的装饰器

答案 1 :(得分:11)

函数addElement返回对当前表单的引用,而不是最后添加的元素。

你可以试试这个:

$form = new Zend_Form();
$form->addElement('submit', 'submit', array(
    'ignore'   => true,
    'label'     => 'Add new material'
));

$element = $form->getElement('submit');
$element->removeDecorator('label');

答案 2 :(得分:3)

我认为removeDecorator的论点区分大小写。即,它应该是"Label"#注意大写'L'

答案 3 :(得分:1)

为了克服这种麻烦,我正在为我的元素手动定义装饰器......

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper',
    array('HtmlTag', array('tag' => 'span')),
    )
));

您当然可以定义自己的标签。在这个例子中,我只初始化“ViewHelper”装饰器。如果我想初始化“Label”装饰器,我会这样做:

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper',
    'Label',
    array('HtmlTag', array('tag' => 'span')),
    ),
    'attribs' => array('class' => 'required validate-digits')
));

我希望这有道理......:o)