如何将Zend_Db_Table _Row对象映射到Zend_Form_Element选择选项(最佳方式)

时间:2012-03-22 22:02:58

标签: php zend-framework zend-form zend-db

如何使用Zend_Db_Table_Row中的选项直接填充Zend_Form_Element_Select?

例如:

    $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());

但这不会有好处。假设我想将对象id作为选项值,将某些对象属性作为选择标签。

我知道我可以运行foreset thourgh the rowset并构造一个选项数组但是可能有某种map函数?

2 个答案:

答案 0 :(得分:2)

您创建的任何 map 函数都将迭代行集,因此您可以简单地执行此操作,例如

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

答案 1 :(得分:2)

您还可以考虑定制模型方法以准确返回您想要使用的数组。 也许类似于:

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

            $entries[] = $entry;
        }
        return $entries;
    }