gpt4 book ai didi

php - 带有选择列表的 Symfony 2 表单

转载 作者:可可西里 更新时间:2023-10-31 23:03:12 25 4
gpt4 key购买 nike

如何在 Symfony 2 中使用数据库表中的值创建一个选择列表?

我有 2 个实体:StudentClassroom 具有 ManyToOne 关系,我需要创建一个包含以下字段的表单:name姓氏年龄类(class)(从可用类(class)中选择列表)。

在我的学生表格中我有

    $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         

亲切的问候,切尔诺丹<​​/p>

最佳答案

不确定您是否找到了答案,但我只是不得不进行一些挖掘,以便为我自己的项目找出答案。

表单类没有设置为像 Controller 那样使用 Doctrine,因此您不能以相同的方式引用实体。你想要做的是使用 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())

您可能不希望人们创建自己的教室。除非你这样做,否则是的。

关于php - 带有选择列表的 Symfony 2 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7165617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com