Для таблиц вашей базы данных вы должны создавать модели - они должны содержать логику для получения и установки данных в эту таблицу. Таким образом, в этом случае модель должна отвечать за получение массива значений, который затем передается в контроллер, а затем в форму.
class MyModel
{
public function getSelectArray()
{
//Get stuff from Db here and format into an array ready to add to the form
}
}
Затем вы можете сделать это в вашем контроллере
$model = new MyModel();
$element->addMultiOptions($model->getSelectArray());
Вы также можете создать специальный класс формы, который расширяет Zend_Form
, затем он может быть вызван из любого контроллера и возвращать ту же форму - что позволяет легко повторно использовать форму где угодно - например, Вы можете использовать ту же форму на странице регистрации, что и на странице «Мой профиль».
В качестве примера ниже приведена функция из моей модели, которая делает именно это:
public function getSelectArray()
{
$select = $this->select()->order(array("name ASC"));
$categories = $select->query()->fetchAll();
$return = array();
foreach($categories as $category)
$return[$category['id']] = $category['name'];
return $return;
}