Как сопоставить объект Zend_Db_Table_Row с параметрами Zend_Form_Element_Select (опционально) - PullRequest
0 голосов
/ 23 марта 2012

Как бы вы заполнили Zend_Form_Element_Select параметрами, прямо из Zend_Db_Table_Row?

Например:

    $select = new Zend_Form_Element_Select('user_id', array(
        'required'  => true
        ));

    // fetching users for select
    $userTable = new User_Model_DbTable_User();
    $users = $userTable->fetchAll();
    $select->addMultiOptions($users->toArray());

Но это не сработает. Допустим, я хочу иметь идентификатор объекта в качестве значения параметра и некоторое свойство объекта в качестве метки выбора.

Я знаю, что могу запускать foreach через набор строк и создавать массив опций, но, может быть, есть какая-то функция карты?

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Вы также можете подумать о том, чтобы адаптировать метод модели, чтобы он возвращал именно тот массив, который вы хотите использовать.Возможно, что-то похожее на:

public function fetchSelectList() {
        $resultSet = $this->fetchAll();
        $entries = array();
        foreach ($resultSet as $row) {
            $entry['id'] = $row->id;
            $entry['name'] = $row->name;

            $entries[] = $entry;
        }
        return $entries;
    }
2 голосов
/ 23 марта 2012

Любая созданная вами функция map будет выполнять итерацию набора строк, поэтому вы можете просто сделать это, например,

foreach ($users as $user) {
    $select->addMultiOption($user->id, $user->someObjectProperty);
}
...