php – 如何在Symfony 2中的Form(Type)类中获取实体存储库的实例?
|
假设我有普通的*类型: class LocationType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilder $builder,array $options)
{
$builder
->add(...)
...
}
}
其中一个字段是选择类型.应该从数据库(从某个特定的实体存储库)检索需要用作选择项的值. 所以问题是:如何在LocationType类中获取存储库?是通过构造函数传递它的唯一方法吗? UPD: 我知道实体类型,但遗憾的是我不能使用它,因为我的属性不是也不能被定义为一对一的关系,因为Doctrine不支持的非常复杂的关系条件(还是?).有关其他详细信息,请参见How to specify several join conditions for 1:1 relationship in Doctrine 2 您可以将实体字段类型指定为选项,如下所示:$builder
->add('foo','entity',array(
'class' => 'FooBarBundle:Foo','query_builder' => function(DoctrineORMEntityRepository $er) {
return $er->createQueryBuilder('q')->orderBy('q.name','ASC');
},));
编辑: 希望这可以帮助. 编辑: 下面进一步讨论,这是一个例子 在控制器中: $entity = new Foo();
$type = new FooType();
$er = $this->getDoctrine()
->getEntityManager()
->getRepository('FooBarBundle:Foo');
$form = $this->createForm($type,$entity,array(
'foo_repository' => $er
));
$options数组被传递给FooType :: buildForm()方法,因此foo_repository应该在这个方法中可用,如下所示: $er = $options['foo_repository']; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
