2009-12-30 23 views
2

當訪問者將他們的電子郵件地址輸入到表單中時,我想檢查它是否是唯一的。所以我有一個簡單的電子郵件的形式:在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 ?> 
+0

哪一個是正確的答案? – emaillenin 2011-06-28 10:12:32

回答

0

我對這個問題的解決方案是使用Zend_Form_Decorator_Callback。

0

我認爲你的IF語句是錯誤的。確保你的代碼進入IF循環。

嘗試這樣:

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