我正在使用Symfony 3 Forms构建,并且需要在表单中检索依赖于当前用户的集合,以在下拉列表中呈现.
使用EntityType我可以检索所有实体的列表,但我希望能够运行自定义查询,该查询仅检索与当前用户对象有关系的查询.
我已经阅读了有关表单和EntityType的文档,它解释了自定义查询和提及作为参数传递集合.但我无法找到有关如何在任何地方实现这一目标的说明.
理想情况下,我想要传入我在Controller中策划的集合,传入User对象以在Form中运行查询,或以其他方式访问表单中的用户ID以运行查询.
有没有人找到类似的解决方案?
解决方法:
你应该试试
pass in the User object to run the query inside the Form
>在options resolver中定义所需参数用户:
public function configureOptions(OptionsResolver $resolver)
{
// ...
$resolver->setrequired('user');
// type validation - User instance or int, you can also pick just one.
$resolver->setAllowedTypes('user', array(User::class, 'int'));
}
它会强制您传递用户选项,这样您就不会忘记它.
在控制器中它可能看起来像这样:
$this->createForm(SomeFormType::class, $underlyingObjectOrNull, array(
'user' => $this->getUser(),
));
>建立custom query for EntityType
领域:
$user = $options['user'];
$builder->add('someField', EntityType::class, array(
'class' => 'AppBundle:SomeEntity',
'query_builder' => function (EntityRepository $er) use($user) {
return $er->createqueryBuilder('u')
//.. -> some method building the query builder
},
));
请注意使用($user)部分,它允许您在匿名函数内访问此变量.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。