1

ユーザーコントローラーには、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));

次に、フォームクラスにメールを渡す必要があります。しかし、私はこれを行う方法がわかりません。この点で私を助けてください。ありがとう

4

1 に答える 1

1

私は少し混乱しています。関数は1つの__construct引数を取ります$mail。あなたはそれをあなたのBusinessForum_Validate_UniqueEmailクラスに渡しています。

ただし、関数では、電子メール情報ではなく、フォームの設定があるように見える引数に_getEditForm配列を渡します。$mail

それがあなたがものに名前を付けた方法であり、それがどのように機能するかということであれば、問題ありません。__construct次に、関数に2番目のパラメーターを追加する必要があります。

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);
于 2012-09-17T20:02:10.700 に答える