在Zend_Form中显示手动设置的错误

时间:2009-12-30 13:21:04

标签: zend-form

当访问者将他们的电子邮件地址输入表单时,我想检查它是否是唯一的。所以我有一个简单的电子邮件表格:

class Form_Register extends Zend_Form
{
public function __construct($options = null)
{
    parent::__construct($options);
    $this->setName('register');

    $email = new Zend_Form_Element_Text('Email');
    $email->setLabel('Your email address:')
    ->setRequired(true)
    ->addFilter('StripTags')
    ->addFilter('StringTrim')
    ->addValidator('EmailAddress')
    ->addErrorMessage('Please check that email address is correct.');

    $submit = new Zend_Form_Element_Submit('submit');
    $submit->setAttrib('id', 'submitbutton');

    $this->addElements(array($email, $submit));
}
}

如果请求是帖子,我会检查电子邮件是否唯一。我正在向元素添加错误消息,因为它不是唯一的,但它不会出现在我的视图中。

    if ($this->getRequest()->isPost()) 
    {
        $formData = $this->_request->getPost();

        // check if email is unique
        $isUnique = FALSE;

        if ( NULL != $member )
        {
        $form->Email->addErrors(array('That email is already in use.'))
        ->markAsError();
        }

        $form->populate($formData);

        $this->view->form = $form; 

我的观点只是回应了表格:

<?php echo $this->form ?>

2 个答案:

答案 0 :(得分:0)

我对此问题的解决方案是使用Zend_Form_Decorator_Callback。

答案 1 :(得分:0)

我认为您的IF声明是错误的。确保你的代码进入IF循环。

尝试这样的事情:

if ( NULL != $member )
{
    echo "inside IF loop";         
} else {
    echo "oops missed the loop"; 
}