Doctrine 2 + Zend Form - 填充动态选择菜单

时间:2011-09-20 21:40:58

标签: zend-framework zend-form doctrine-orm

我正在构建一个Zend表单,其下拉/选择菜单填充了Doctrine 2查询中的数据。

在我的repository类中,我在名为selectUser()的方法中有以下查询:

$query = $em->createQuery('SELECT u.id, u.name FROM XX\Entity\Users u ORDER BY u.name ASC');
$users = $query->getResult();

这会返回一个多维数组,我试图像这样循环(在同一个方法中):

$options = array();
foreach ($users as $key => $value) {
   $options[$value['id']] = $value['name'];
}
return $options;

然后在我的Zend表单类中,我尝试填充Select元素,如下所示:

$id = new Zend_Form_Element_Select('id');
$options = $this->usersRepository->selectUser();
$id->AddMultiOptions($options);

每个用户行的结果是一个错误,指出“未定义的索引:[名称]在...... UsersRepository.php ...中”,其中[name]是每行中'name'列的值。< / p>

有没有人看到我做错了什么或如何使用Doctrine 2和Zend Framework填充动态选择菜单?

(顺便说一句,为了运行存储库方法,表单类具有表示Doctrine容器,实体管理器和Users存储库的受保护属性。如果这不是最佳实践,我欢迎任何建议改进我的技术。)

1 个答案:

答案 0 :(得分:1)

我认为你的问题在这里

$ options [$ value ['id'] = $ value ['name']];

这会更好

$ options [$ value ['id']] = $ value ['name'];