在我的用户控制器中,我有一个editAction。以下声明来自editAction。
$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 :(得分: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);