Dan*_*nau 9 php forms select doctrine symfony
如何使用Symfony 2中的数据库表创建包含值的选择列表?
我有2个实体:Student和Classroom,具有ManyToOne关系,我需要创建一个包含以下字段的表单:姓名,姓氏,年龄,教室(从可用班级中选择列表).
在我的学生表格中我有
$builder
->add('name')
->add('surname')
->add('age')
->add('classroom', new ClassroomType())
;
Run Code Online (Sandbox Code Playgroud)
在我的课堂表格中我有这个:
$classrooms =$this->getDoctrine()->getRepository('UdoCatalogBundle:Classroom')->findAll();
$builder
->add('clasa','choice',array('choices' => array($classrooms->getId() => $classrooms->getName())));
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
亲切的问候,Cearnau Dan
orn*_*rnj 24
不确定你是否找到了答案,但我只是需要做一些挖掘来解决我自己的项目.
表单类未设置为像控制器一样使用Doctrine,因此您无法以相同的方式引用Entity.您要做的是使用实体字段类型,这是一种特殊的选择字段类型,允许您在尝试时从Doctrine实体加载选项.
好长话短说.而不是做你正在做的事情来创建选择字段,这样做:
->add('category', 'entity', array(
'class' => 'VendorWhateverBundle:Category',
'query_builder' => function($repository) { return $repository->createQueryBuilder('p')->orderBy('p.id', 'ASC'); },
'property' => 'name',
))
Run Code Online (Sandbox Code Playgroud)
我不确定你是否可以将query_builder函数放入存储库或者什么,我随便走得很疯狂.到目前为止,我上面链接的文档非常清楚要做什么.我想下一步是阅读Doctrine的QueryBuilder.
当你在那里时,我想你想要在你嵌入课堂表格的地方放弃一下,
->add('classroom', new ClassroomType())
Run Code Online (Sandbox Code Playgroud)
您可能不希望人们创建自己的教室.除非你这样做,那么是的.
| 归档时间: |
|
| 查看次数: |
19185 次 |
| 最近记录: |