我如何使用 Symfony 2 中数据库表中的值创建选择列表?
我有 2 个实体:Student and 课堂具有多对一关系,我需要创建一个包含以下字段的表单:name, surname, age, 课堂(从可用课程中选择列表)。
In my 学生表格 i have
$builder
->add('name')
->add('surname')
->add('age')
->add('classroom', new ClassroomType())
;
In my 课堂形式我有这个:
$classrooms =$this->getDoctrine()->getRepository('UdoCatalogBundle:Classroom')->findAll();
$builder
->add('clasa','choice',array('choices' => array($classrooms->getId() => $classrooms->getName())));
我收到以下错误:
Fatal error: Call to undefined method Udo\CatalogBundle\Form\ClassroomType::getDoctrine() in /var/www/html/pos/src/Udo/CatalogBundle/Form/ClassroomType.php on line 13
亲切的问候,
塞尔诺·丹
不确定您是否找到了答案,但我只需要进行一些挖掘即可为我自己的项目找出答案。
表单类没有像控制器那样设置为使用 Doctrine,因此您无法以相同的方式引用实体。你想做的是使用实体字段类型这是一个特殊的选择字段类型,允许您按照您想要的方式从 Doctrine 实体加载选项。
好吧,长话短说。不要执行创建选择字段的操作,而是执行以下操作:
->add('category', 'entity', array(
'class' => 'VendorWhateverBundle:Category',
'query_builder' => function($repository) { return $repository->createQueryBuilder('p')->orderBy('p.id', 'ASC'); },
'property' => 'name',
))
我不确定您是否可以将 query_builder 函数放入存储库或其他什么,我一边走一边疯狂地摇摆。到目前为止,我上面链接的文档已经非常清楚地说明了要做什么。我想下一步是阅读Doctrine 的 QueryBuilder.
当你在那里时,我认为你想放弃嵌入课堂表单的部分,
->add('classroom', new ClassroomType())
您可能不希望人们创建自己的教室。除非你这样做,否则是的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)