2012-09-17 48 views
1

在我的用戶控制器中,我有一個editAction。下面的聲明來自editAction。如何創建一個zend表單對象?

$form = $this->_getEditForm();//here I need to pass $user->email to the form class. 

我有另一個類_gerEditForm()在同一個控制器。

private function _getEditForm() 
    { 
    $form = new Form_Admin_Users_Add(array(
      'method' => 'post', 
      'action' => $this->_helper->url('edit', 'users'), 

    )); 
    return $form; 
    } 
enter code here 

//窗體類

class Form_Admin_Users_Add extends Form_Abstract 
{ 

    public function __construct($mail=null) 
    { 
     parent::__construct(); 
     $this->setName('user'); 
     //$userId = new Zend_Form_Element_Text('userId'); 
     //$userId->addFilter('Int'); 
     //$this->addElement($userId); 

     $this->setAttrib('id', 'addUserForm'); 
     $this->setAttrib('class', 'formInline'); 

     $firstName = new Zend_Form_Element_Text('firstName'); 
     $firstName->setRequired(true) 
     ->addFilter('StringTrim') 
     ->addValidator('NotEmpty', false, array('messages'=>'First name cannot be empty')) 
     ->addValidator('StringLength', false, array(1, 256)) 
     ->setLabel('First Name:'); 
     $this->addElement($firstName); 

     $lastName = new Zend_Form_Element_Text('lastName'); 
     $lastName->setRequired(true) 
     ->addFilter('StringTrim') 
     ->addValidator('NotEmpty', false, array('messages'=>'Last name cannot be empty')) 
     ->addValidator('StringLength', false, array(1, 256)) 
     ->setLabel('Last Name:'); 
     $this->addElement($lastName); 

     $email = new Zend_Form_Element_Text('email'); 
     $email->setLabel('Email :') 
     ->addValidator('NotEmpty', false, array('messages'=>'email cannot be empty')) 
     ->addFilter('StripTags') 
     ->addFilter('StringTrim') 
     ->addValidator('EmailAddress') 
     ->addValidator(new BusinessForum_Validate_UniqueEmail($mail)); 

現在我需要通過電子郵件的形式類。但我不知道該怎麼做。 請在這方面幫助我。 謝謝

+0

你是否在'forms/Admin/Users/Add.php'上創建了表單類?向我們顯示該代碼。 – Travesty3

+0

是的,我做過。現在我已經附上了代碼 謝謝 – user1559230

回答

1

我有點困惑。 __construct函數採用一個參數$mail。你正在將它傳遞給你的BusinessForum_Validate_UniqueEmail類。

但是,在您的_getEditForm函數中,您將數組傳遞給$mail參數,該參數看起來像表單的設置,而不是電子郵件信息。

如果這只是你如何命名的東西,這就是它的工作原理,很好。那麼你應該只需要第二個參數添加到您的__construct功能:

public function __construct($mail=null, $emailAddress="") 

通過它從你_getEditForm功能:

private function _getEditForm($emailAddress="") 
{ 
    $form = new Form_Admin_Users_Add(array(
     'method' => 'post', 
     'action' => $this->_helper->url('edit', 'users') 
    ), $emailAddress); 
    return $form; 
} 

又通的電子郵件地址到你的_getEditForm功能:

$form = $this->_getEditForm($user->email); 
相關問題