2010-11-24 45 views
3

我嘗試使用一個Zend_Form進行更新和創建,並希望通過參數進行切換。但我的方法使用構造函數不起作用。當我調試這部分時,屬性設置正確,但在init()方法中,它再次爲空。構造函數param在init中不可用

也許我不明白Zend_Form方法。你可以幫我嗎?錯誤在哪裏?

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); 
} 

我切換了構造函數的前兩行。

+0

它的工作原理。謝謝! – lony 2010-11-24 08:28:25