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

Zend framework 如何从提交按钮中删除标签装饰器,zend-framework,zend-form,Zend Framework,Zend Form,在我的表格中,我有这个代码 // Add the submit button $element = $this->addElement('submit', 'submit', array( 'ignore' => true, 'label' => 'Add new material' )); $element->removeDecorator('label'); 但是,表单仍然使用标签元素呈现在标签之间 我做错了什么?我认为removeDecorat

在我的表格中,我有这个代码

// Add the submit button
$element = $this->addElement('submit', 'submit', array(
    'ignore'   => true,
    'label' => 'Add new material'
));
$element->removeDecorator('label');
但是,表单仍然使用标签元素呈现在标签之间


我做错了什么?

我认为
removeDecorator
的参数区分大小写。也就是说,它应该是
“Label”
#注意大写的
“L”

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

你可以试试这个:

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

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

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

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper',
    array('HtmlTag', array('tag' => 'span')),
    )
));
当然,您可以定义自己的标记。在本例中,我仅初始化“ViewHelper”装饰器。如果我想初始化“标签”装饰器,我会:

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper',
    'Label',
    array('HtmlTag', array('tag' => 'span')),
    ),
    'attribs' => array('class' => 'required validate-digits')
));
我希望这是有意义的…:o) 这对我很有效:

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

我没有打印($element)为了找出
$element

存在哪些装饰器,我试着证明它没有任何区别。我在另一个答案中发现了这一点,但这样做似乎不正确,因为文档中没有描述如何做$元素->removeDecorator('DtDdWrapper')->addDecorator('HtmlTag',array('tag'=>'dd'));然而,即使从html中删除元素也不能解决我无法将submit按钮定位到左侧的问题;对此:$element->removeDecorator('Label');但还是不起作用?如果是这样的话,也许可以尝试var_dump(getDecorators())并让我们从那里开始