![](/img/trans.png)
[英]Symfony2/Doctrine: how to add more of the same entity in the same collection?
[英]Symfony2: how to add a Doctrine Entity Array to FormBuilder
我正在使用Symfony和Doctrine,我有一个可以根据特定条件选择行的函数:
$entities = $repository->getSomeEntities();
现在,我想在选择列表中呈现这些实体,我检查了entity
FormType,但无法实现所需的功能。
例:
$builder->add('id','entity', array(
'class' => 'Path\To\Entity',
'property' => 'id'
));
上面的代码可以正常工作,只不过它选择了所有实体。
我检查了Symfony文档http://symfony.com/doc/current/reference/forms/types/entity.html ,看来实现此目的的唯一方法是使用query_builder选项,该选项不适用于我的情况
无论如何,有没有将$entities
数组作为选择列表添加到我的表单中?
看到您实现ChoiceListProvider
。 Symfony
内置了许多实现,但是您可能需要像SimpleChoiceListProvider
这样简单的东西。
EntityManager
实例传递给表单(通过构造函数或选项) choice
而不是entity
choice_list
设置为new MySimpleChoiceLIstProvider($this->entityManager)
您可以(可能将)不只是将EntityManager
传递给提供程序,正如您所说的“将根据特定条件选择行”。 如果该条件源自表单本身,则可能应该通过FormEvents
,这将使您可以访问数据对象。
希望这可以帮助。
使用您编写的内容,没有任何理由QueryBuilder无法正常工作。
你应该有这样的东西:
$builder
->add('fieldname', 'entity', array(
'class' => 'Path\to\Entity',
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
return $er->yourFunction();
},
'required' => true
))
使用“ yourFunction”作为存储库的功能,例如“ getSomeEntities”。
您能告诉我们为什么它不起作用吗? 谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.