Zend framework 如何从我的控制器获取信息到我的表单?

Zend framework 如何从我的控制器获取信息到我的表单?,zend-framework,zend-form,Zend Framework,Zend Form,对于表单,我尝试添加一个selectbox,其中包含数据库中的项目列表 我的表单位于/application/forms/News/Edit.php中 在我的控制器中,我想获取我想在表单中使用的列表 如何将该列表从控制器添加到表单中 以下是我在Edit.php中的代码: $this->addElement( 'select', 'view_status', array( 'label' => 'View status', 'multi

对于表单,我尝试添加一个selectbox,其中包含数据库中的项目列表

我的表单位于/application/forms/News/Edit.php中

在我的控制器中,我想获取我想在表单中使用的列表

如何将该列表从控制器添加到表单中

以下是我在Edit.php中的代码:

$this->addElement(
   'select',
    'view_status',
    array(
       'label' => 'View status',
       'multioptions' => array(
          //THIS SHOULD BE FILLED WITH DYNAMIC CONTENT FROM MY CONTROLLER
       )
    )
);

在控制器的操作中,可以根据操作初始化所需的选项。在将表单发送到视图之前,应设置选项

$Form = new form_News_Edit();
$Form->getElement('view_status')
   ->setMultioptions($arrayOptions);

$this->view->assign('Form', $Form);

只需使用forms类的构造函数或_init函数来设置任何自定义值。 它会让你看起来像(在你的控制器中):

然后在你的表格课上:

public function __construct($myArrayOfValue){

}


yvoyer的解决方案也很好,但它去掉了表单的一些业务逻辑。

您可以在表单构造函数的第一个参数中传递select的选项。初始化表单时,Zend_form会查找由选项名称后缀的set方法:

class App_Form_News_Edit extends Zend_Form
{
    public function setViewStatusOptions($options)
    {
        $this->view_status->setMultioptions($options);
    }
}

$form = new App_Form_News_Edit(array('viewStatusOptions' => array(..))); 

无意中编辑了你的问题对不起!
$this->addElement(
   'select',
    'view_status',
    array(
       'label' => 'View status',
       'multioptions' => $myArrayOfValue
    )
);
class App_Form_News_Edit extends Zend_Form
{
    public function setViewStatusOptions($options)
    {
        $this->view_status->setMultioptions($options);
    }
}

$form = new App_Form_News_Edit(array('viewStatusOptions' => array(..)));