2010-11-24 8 views
3

私は1つのZend_Formを更新に使用して作成し、両方を1つのパラメータに切り替えようとします。しかし、コンストラクタを使用して私のアプローチは動作しませんでした。この部分をデバッグすると、プロパティは正しく設定されますが、init()メソッドでは再びnullになります。コンストラクタparamはinitで利用できません

多分私はZend_Formアプローチを理解していないかもしれません。手伝って頂けますか?エラーはどこですか?

フォームクラス:コントローラのアクションで

class Application_Form_User extends Zend_Form { 
    const CREATE = 'create'; 
    const UPDATE = 'update'; 

    protected $_formState; 

    public function __construct($options = null, $formState = self::CREATE) { 
     parent::__construct($options); 

     $this->_formState = $formState; 
     $this->setAction('/user/' . $this->_formState); 
    } 

    public function init() { 

     $this->setMethod(Zend_Form::METHOD_POST); 

    if ($this->_formState == self::CREATE) { 
      $password = new Zend_Form_Element_Password('password'); 
      $password->setRequired() 
        ->setLabel('Password:') 
        ->addFilter(new Zend_Filter_StringTrim()); 
    } 
[..] 

用途:

$form = new Application_Form_User(); 
$this->view->form = $form->render(); 

ありがとうございます。

答えて

2

init()の方法は、parent::__construct($options)と呼ばれます。これを試してください:

public function __construct($options = null, $formState = self::CREATE) { 
    $this->_formState = $formState; 
    parent::__construct($options); 

    $this->setAction('/user/' . $this->_formState); 
} 

私はコンストラクタの最初の2行を切り替えました。

+0

これは機能します。ありがとうございました! – lony

関連する問題