Как удалить декоратор меток из кнопки отправки

В моей форме у меня есть этот код;

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

Однако форма по-прежнему отображает элемент метки между тегами.

Что я делаю неправильно?

Ответ 1

Это сработало для меня:

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

Я сделал print_r($element);, чтобы узнать, какие декораторы существуют для $element.

Ответ 2

Функция addElement возвращает ссылку на текущую форму не на последний добавленный элемент.

Вы можете попробовать следующее:

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

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

Ответ 3

Я думаю, что аргумент removeDecorator чувствителен к регистру. I.e, это должно быть "Label" # отметить прописную букву 'L'.

Ответ 4

Чтобы преодолеть эту неприятность, я определяю вручную декораторы для моего элемента...

$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)