Как создать экземпляр для Zend-контроллера - PullRequest
0 голосов
/ 08 марта 2011

У меня есть контроллер с именем class TestController, который расширяет некоторую Zend_Controller_Action.Теперь я хотел бы использовать создание экземпляра TestController в TestForms (Zend_Form).Я хочу заполнить Zend_Form_Element_Select динамически.Пожалуйста, предложите, как я могу это сделать.Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Где вы создаете экземпляр формы - она ​​в контроллере?Вместо того, чтобы форма вызывала действие на контроллере для динамического получения значений, вы должны смотреть на установку значений в форме после ее создания.

Быстрый и грязный способ сделать это - получить значения в контроллере и присвоить его элементу с помощью:

$values = $db->query('query');
$element = $form->getElement('dynamicSelect');
$element->setValue($values);

Конечно, имея запросы БД к таблице в вашемКонтроллер не совсем лучшая практика ... По предложению Филистина я использую класс конструктора форм для динамического построения форм из моих моделей.У меня есть мапперы для каждой модели, и я передаю маппер в класс построителя форм, чтобы он мог динамически заполнять мои элементы выбора.

0 голосов
/ 08 марта 2011

Несколько вещей, которые нужно попробовать (не рекомендуется передавать контроллер в форму или создавать его изнутри):

  1. Используйте модель для доступа к динамическим значениям, которые вы хотите поместить в свой Zend_Form_Element_Select.
  2. Если форма сложная, создайте класс конструктора форм, чтобы позаботиться о тяжелом поднятии конструкции формы и выделить его.
  3. Создание настраиваемых элементов формы путем расширения из Zend_Form_Element_ (Radio, Select, и т. Д.), Если вы чувствуете, что вам нужен очень точный контроль над конструкцией / поведением / внешним видом элемента формы, но хотите иметь возможность использовать этот элемент в другом месте. *
...