Zend框架表上的表装饰器

时间:2010-02-24 09:04:14

标签: zend-framework zend-form zend-form-element

我创建了一个以表格形式装饰的表单

我的装饰代码

$this->setElementDecorators(array(
            'ViewHelper',
            'Errors'
            array(array('data'=>'HtmlTag'),
            array('tag'=>'td','class'=>'element')),
            array('Label',array('tag'=>'td')),
            array(array('row'=>'HtmlTag'),array('tag'=>'tr')),

    ));

$this->setDecorators(array(
            'FormElements',
            array('HtmlTag',array('tag'=>'table')),
            'Form'
        ));

它工作正常, 现在我wana错误消息也装饰了 我该怎么改变我的代码?

2 个答案:

答案 0 :(得分:2)

这是一种相当复杂的方法。我已经为装饰器添加了类,所以你可以设置它们的样式。不像你的例子。

// To be assigned at the beginning of your form class.

    public $elementDecorators = array(
    'ViewHelper',
    'Errors',
    array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'col2')),
    array('Label', array('tag' => 'td','class'=>'taR')),
    array(array('row' => 'HtmlTag'), array('tag' => 'tr','class' => 'rowA')),
    );

$this->addElement('ValidationTextBox', 'name', array(
            'decorators' => $this->elementDecorators,
            'validators' => array(                                 
                                array('regex',  false,'/^[a-zA-Z ]+$/')
                            ),
            'label' => $this->translator->translate ( 'Name' ) . ' : ',
            'required' => true,
            'trim' => true,
            'propercase' => true,
             'regExp' => '[a-zA-Z ]+',
                'invalidMessage' => $this->translator->translate ( 'Name - Must be alpha numeric.' )
            )
            );

答案 1 :(得分:2)

如果要显示在一个地方分组的所有错误,您应该从每个元素中删除错误装饰器,然后添加到您构成formErrors装饰器。以下是How to remove Zend Form error messages?

的示例
$form->setDecorators(array(
    'FormElements',
    new Zend_Form_Decorator_FormErrors(array
        (
            'ignoreSubForms' => true,
            'markupElementLabelEnd' => '</b>',
            'markupElementLabelStart' => '<b>',
            'markupListEnd' => '</div>',
            'markupListItemEnd' => '</span>',
            'markupListItemStart' => '<span>',
            'markupListStart' => '<div id="Form_Errors">'
        )
    ),
    'Form'
));