Каков наилучший способ заполнить элемент select, являющийся частью Zend_Form?
Я использовал populate()
для заполнения различных значений элементов формы, но операторы выбора не заполняются.
Мое решение, которое работает, но я подозреваю, что оно не идеально, выглядит следующим образом:
В методе init()
MyForm
(который расширяет Zend_Form
) я выполняю вызов базы данных и получаю необходимые данные.
$opt = Zend_Registry::get('dbAdapter');
$sql = 'SELECT DISTINCT foo FROM bar';
$res = $opt->fetchAll($sql);
$flat = $this->flattenArray($res); //this flattens the array and
//sets the keys to equal the values
В этот момент я передаю $flat
значению multi-options правильного элемента select. Затем, когда контроллер получает форму для представления, если форму необходимо заполнить, я вызываю ее заполнить, и все выглядит правильно заполненным.
Некоторые проблемы, которые я вижу: во-первых, у меня есть этот вызов базы данных в методе init()
формы, поэтому он вызывается при каждом использовании формы. Во-вторых, у меня открыто соединение с базой данных, чтобы заполнить элемент select, затем я делаю второе соединение, чтобы использовать заполнение.
Какой лучший способ сделать все это? Я хотел бы сделать одно соединение с базой данных и использовать заполнение, чтобы заполнить все и сделать все это из моего контроллера, а не разделять его между расширенным классом формы и контроллером. Это лучший подход? Это мое решение на заказ, и оно работает, но я ЗНАЮ, что оно далеко от идеала
(Кстати, как кто-то, кто работает один и в изолированном месте, может задавать stackoverflow такой вопрос, как если бы я собирал коллегу, чтобы задать вопрос, для меня это очень полезно ... спасибо) 1022 *