2010-11-24 43 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