如何使用Symfony 2中的数据库表创建具有值的选择列表?
我有2个实体:学生和课堂与ManyToOne关系,我需要创建一个表单与以下字段:姓名,姓氏,年龄,教室(从可用类中选择列表).
在我的学生形式我有
$builder ->add('name') ->add('surname') ->add('age') ->add('classroom',new ClassroomType()) ;
在我的课堂表格我有这个:
$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就像控制器那样,所以你不能以相同的方式引用Entity.你想要做的是使用entity Field Type这是一个特殊的选择字段类型,允许你从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’s QueryBuilder上阅读.
当你在那里,我想你想放下你嵌入“课堂”表格的位置,
->add('classroom',new ClassroomType())
你可能不希望人们创建自己的教室.除非你这样做,那么是的.
原文地址:https://www.jb51.cc/php/131307.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。