Как получить информацию от моего контроллера к моей форме? - PullRequest
0 голосов
/ 27 декабря 2010

Для формы я пытаюсь добавить поле выбора, которое содержит список элементов из моей базы данных.

Моя форма находится в /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 голосов
/ 27 декабря 2010

Просто используйте конструктор или функцию _init вашего класса форм, чтобы установить любые пользовательские значения, которые у вас будут. Это выглядело бы так (в вашем контроллере):

$myForm = new form_News_Edit($myArrayOfValues);

Тогда в вашем классе формы:

public function __construct($myArrayOfValue){

....

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

}

Решение yvoyer's тоже хорошо, но из него извлекается часть бизнес-логики для формы.

0 голосов
/ 28 декабря 2010

Вы можете передать выбранные вами параметры в первом параметре конструктора формы.При инициализации формы 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(..))); 
0 голосов
/ 27 декабря 2010

В действии вашего контроллера вы можете инициализировать нужные параметры в зависимости от действия. Вы должны установить опции перед отправкой формы в представление.

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

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