在EntityType Query_builder中使用$ options

时间:2019-12-04 07:32:07

标签: php symfony query-builder formbuilder

我使用表单生成器创建表单。我在FormBuilderInterface中添加了 team 选项,以在表单中访问此属性。

class PersonnalStatType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('tag', EntityType::class, [
                'class' => StatTag::class,
                'choice_label' => 'name',
                'query_builder' => function (StatTagRepository $rep/*, $options*/)
                    {
                        return $rep->queryActivated($options['team']);
                    }
                ]
            )
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => PersonnalStat::class,
            'team' => null
        ]);

        $resolver->setAllowedTypes('team', ['null', Team::class]);
    }

第一行是EntityType,我需要使用 team 选项来执行查询,但是我不知道如何进行。

到目前为止,我已经尝试过:

'query_builder' => function (StatTagRepository $rep)
    {
        return $rep->queryActivated($options['team']);
    }

但查询不知道$options

  

注意:未定义的变量:选项

还有

'query_builder' => function (StatTagRepository $rep, $options)
    {
        return $rep->queryActivated($options['team']);
    }

但无法识别$options

  

函数App \ Form \ PersonnalStatType :: App \ Form {closure}()的参数太少,在/ Users / pierrickrambaud / Sites / team-manager / vendor / symfony / doctrine-bridge / Form / Type /第32行上的EntityType.php,正好是2个

有人知道有黑客吗?

1 个答案:

答案 0 :(得分:1)

这应该有效:

'query_builder' => function (StatTagRepository $rep) use ($options) {
    return $rep->queryActivated($options['team']);
}