如何从我的控制器获取信息到我的表格?

时间:2010-12-27 15:34:38

标签: zend-framework zend-form

对于表单我正在尝试添加一个包含我的数据库中的项目列表的选择框。

我的表格位于/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
       )
    )
);

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

$myForm = new form_News_Edit($myArrayOfValues);

然后在你的表单类中:

public function __construct($myArrayOfValue){

...

$this->addElement(
   'select',
    'view_status',
    array(
       'label' => 'View status',
       'multioptions' => $myArrayOfValue
    )
);

}

yvoyer的解决方案也很好,但是从中取出了一些业务逻辑。

答案 2 :(得分:0)

您可以在表单构造函数的第一个参数中传递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(..)));