zend使用装饰移动文本框旁边的服务器端验证消息

时间:2013-04-02 11:08:11

标签: php zend-framework

在zend,

使用装饰器如何将验证消息放在文本框旁边。  我目前的装修代码

$elementDecoration = array(
            'ViewHelper',
            'Description',
            'Errors',
            array(array('data'  => 'HtmlTag'), array('tag' => 'td','width'=>'75%', 'class' => 'txt-td-field')),
            array('Label', array('tag' => 'td','width'=>'50%', 'class' => 'txt-td-label', 'placement' => 'prepend')),
            array(array('row'   => 'HtmlTag'), array('tag' => 'tr','valign'=>'top'),'width'=>'102%'),
        );

enter image description here

2 个答案:

答案 0 :(得分:0)

$fname = $this->createElement('text', 'first_name');
$fname ->setRequired(true)
       ->setAttrib('class','my_class')
       ->addValidator('NotEmpty', true, array('Name is required'));
$fname->setDecorators(array('ViewHelper','Errors'));

这将完成这项工作。

答案 1 :(得分:0)

使用自定义装饰器尝试:

class My_Form_Decorator_TdError extends Zend_Form_Decorator_Errors
{
    public function render($content)
    {
        $errors = parent::render('');
        return $content . "<td>" . $errors . "</td>";
    }
}

然后将装饰器设置如下:

       $elementDecoration = array(
        'ViewHelper',
        'Description',
        array(array('data'  => 'HtmlTag'), array('tag' => 'td','width'=>'75%', 'class' => 'txt-td-field')),
        array('Label', array('tag' => 'td','width'=>'50%', 'class' => 'txt-td-label', 'placement' => 'prepend')),
        'TdError',enter code here
        array(array('row'   => 'HtmlTag'), array('tag' => 'tr','valign'=>'top'),'width'=>'102%'),
    );

在表单构造函数

中设置自定义装饰器调用的路径
$this->addPrefixPath('My_Form_Decorator', 'My/Form/Decorator', 'decorator');