В настоящее время я устанавливаю декораторы по умолчанию для моего Zend_Form
, используя класс, расширяющийся от Zend_Form
...
class Application_Form_Abstract extends Zend_Form {
...
function loadDefaultDecorators() {
if ($this->loadDefaultDecoratorsIsDisabled()) {
return $this;
}
// ... for elements
$decorators = $this->_elementDecorators;
if (empty($decorators)) {
$this->setElementDecorators(array(
'ViewHelper',
'Errors',
array('Description', array('tag' => 'p', 'escape' => false)),
'Label',
array('HtmlTag', array('tag' => 'p'))
));
, но вскоре я понимаю, что таким образом я не могу определить конкретные декораторы элементов, такие как
$this->addElement('textarea', 'bio', array(
'decorators' => array(
'ViewHelper',
'Errors',
array('Description', array('tag' => 'p', 'escape' => false)),
'Label',
array('HtmlTag', array('tag' => 'p')),
new Application_Form_Decorator_WmdPreview,
)
));
, поскольку они будут перезаписаны моей пользовательской функцией loadDefaultDecorators()
.Интересно, есть ли способ установить декораторы по умолчанию для элемента, только если у них нет декораторов набора