Как удалить стандартные <b></ b> метки из Zend FormErrors
Я довольно новый Zend Framework и застрял.
Следующий код представляет собой фрагмент настройки декоратора моей формы, где у меня возникла проблема:
// prepend errors to top
$this->setDecorators(
array(
'FormElements',
'Form',
array(
'FormErrors',
array(
'placement' => Zend_Form_Decorator_Abstract::PREPEND
)
)
)
);
Когда ошибки отображаются в представлении, я получаю следующее:
<ul class="form-errors">
<li>
<b>First Name: </b>
<ul class="errors">
<li>You forgot to enter your First Name.</li>
</ul>
</li>
</ul>
Как вы удалите все HTML, включая метку <b>First Name: </b>
?
2 ответа
Просто создайте собственный декоратор, попробуйте что-то вроде этого
protected $_errorDecorator = array(
'markupElementLabelEnd' => '',
'markupElementLabelStart' => '',
'placement'=>Zend_Form_Decorator_Abstract::PREPEND
);
$this->setDecorators(array('FormElements','Form',
array('FormErrors',
$_errorDecorator)));
Я понимаю, что немного опоздал на вечеринку, но так как это топ-5 результатов Google, и до сих пор без ответа, я решил внести свой вклад.
Лучший способ расширить Zend декоратор, перегрузить renderLabel
метод, добавить renderLabels
опция конфигурации, а затем просто проверьте, установлен ли он. Если это так, не вызывайте родительскую функцию, которая отображает ваш ярлык.
$form->setDecorators(
array(
'FormElements',
'Form',
array(
'FormErrors',
array(
'placement' => 'prepend',
'renderLabels' => false
)
)
)
);
class My_Form_Decorator_FormErrors extends Zend_Form_Decorator_FormErrors
{
/**
* @see Zend_Form_Decorator_FormErrors::renderLabel()
*/
public function renderLabel(Zend_Form_Element $element, Zend_View_Interface $view)
{
if ($this->getOption('renderLabels') === false) {
return;
}
return parent::renderLabel($element, $view);
}
}