php – 在’entity’类型表单字段中添加’choice’选项会使表单无效 – Symfony2

我遇到了这个我无法解决的问题.

在我的一个表单中,需要过滤实体.

一点背景:

表单是将新任务添加到工作流程步骤.可以选择的任务取决于用户所处工作流程的哪个阶段,分配给工作流的产品以及管理该工作流的公司.

我尝试将过滤查询添加到’query_builder’部分,我试图将实体存储库中的查询结果放入数组的’choices’部分.

然而,表格总是回来说我正在处理的领域是无效的.最令人费解的部分是,如果没有“选择”字段,当它为该实体引入所有记录时,选择框完全相同(带有一些额外的记录) – 名称和模式如何书面.这很好.所以我完全不知道发生了什么.

表单元素代码:

->add('instructionAction', 'entity', array(
            'label' => 'Action',
            'empty_value' => 'Select Action',
            'required' => true,
            'class' => 'ApplicationTrackpadCommonBundle:InstructionAction',
            'property' => 'description',
            'choices' => $this->instructionActionRepository->findAllForCaseInstruction( $options['caseInstructionId'] )
            )
)

我不确定我可以发布多少代码来处理客户端工作.我使用的查询正确填充下拉框就像没有查询一样,即使我选择了没有任何WHERE子句的所有实体,也会出现同样的问题.

感谢您的帮助.

最佳答案
像这样的东西:

->add('instructionAction', 'entity', array(
    'required' => true,
    'class' => 'ApplicationTrackpadCommonBundle:InstructionAction',
    'query_builder' => function(EntityRepository $er) use ($user) {
        return $er->createQueryBuilder('c')
            ->where('c.user = :user')
            ->setParameter('user', $user)
            ->orderBy('c.name', 'ASC');
 }))

您可以使用使用传递变量.

转载注明原文:php – 在’entity’类型表单字段中添加’choice’选项会使表单无效 – Symfony2 - 代码日志