加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Symfony 3:将变量传递给表单

发布时间:2020-12-13 21:56:49 所属栏目:PHP教程 来源:网络整理
导读:我正在使用Symfony 3 Forms构建,并且需要在表单中检索依赖于当前用户的集合,以在下拉列表中呈现. 使用EntityType我可以检索所有实体的列表,但我希望能够运行自定义查询,该查询仅检索与当前用户对象有关系的查询. 我已经阅读了有关表单和EntityType的文档,它
我正在使用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'));
}

它会强制您传递用户选项,这样您就不会忘记它.

>将用户实例或用户ID作为选项传递到表单中.

在控制器中它可能看起来像这样:

$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)部分,它允许您在匿名函数内访问此变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读