php - 将 'choice' 选项添加到 'entity' 类型表单字段会使表单无效 -- Symfony2

标签 php forms symfony doctrine-orm

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

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

一点背景:

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

我尝试将过滤查询添加到“query_builder”部分,并尝试将实体存储库中的查询结果放入数组的“选择”部分。

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

表单元素代码:

->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');
 }))

您可以使用use 传递变量。

关于php - 将 'choice' 选项添加到 'entity' 类型表单字段会使表单无效 -- Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19120461/

相关文章:

php - 如何在 mysqli 查询中使用 $_POST 变量? (php)

forms - 无法在容器面板初始化时在 Ext Js FormPanel 上调用 getValues()

symfony - 如何从我的 Twig 扩展中获取我设置的 Twig 变量?

symfony - 用于Symfony 3.4中一对多关系的自定义 Hydrator

php - 直接从 Eloquent 查询中提取和格式化日期

php - cakephp 2.0 中的 LdapAuth

javascript - Angular 2 - 表单提交未检索 value 属性

jquery - 预先选择表单选项 > 根据单击的按钮选择元素?

php - FOS 带有 ACL 和角色的评论权限

php 列表类别