getParameter 方法中未定义的变量

Posted

技术标签:

【中文标题】getParameter 方法中未定义的变量【英文标题】:variable undefinded in setParameter method 【发布时间】:2014-03-11 16:10:53 【问题描述】:

我在控制器中有下一个代码来处理表单,但我收到一条错误消息,显示“未定义的变量:页面”。虽然$page['community'] 之前定义过。 这是代码:

    $form = $this->createFormBuilder()
        ->add('banish', 'entity', array(
            'label' => $this->trans("Usuarios a expulsar"),
            'class' => 'Pro\MembershipBundle\Entity\Membership',
            'query_builder' => function(EntityRepository $er) 
                return $er->createQueryBuilder('SELECT m FROM User u INNER JOIN Membership m ON m.user = u.id WHERE m.community = :community')
                    ->setParameter('community', $page['community']);
                ,

        ))
        ->getForm();

这里会发生什么,以及如何解决?

【问题讨论】:

$page 来自哪里? @Touki - $page['community'] 是一个包含 Community 实体的对象。 您发布的代码中没有任何地方引用$page。我假设它是 before $form 声明。尝试使用function(EntityRepository $er) use ($page) @Touki - 我试过了,但我收到了这个错误; " [语法错误] 第 0 行,第 7 列:错误:预期的 IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got 'SELECT' " 嗯,这是另一个问题,与这个问题无关。 【参考方案1】:

我认为如果您使用 createQuery instaedof 查询构建器,它将解决 或者干脆

$er->createQueryBuilder()
   ->select('m')
   ->from('RedconviveMembershipBundle:User','u')
   ->innerJoin('u.membership','m')
   ->where('m.comunity = :comunity')
   ->setParameter('community', $page['community']);

如果你能写出你的联想,那么找到解决方案会更容易

【讨论】:

以上是关于getParameter 方法中未定义的变量的主要内容,如果未能解决你的问题,请参考以下文章

错误:注销链接中未定义的局部变量或方法`delete'

Discord.js - 无法读取 execute() 方法中未定义的属性

未捕获的类型错误:无法读取 VueJs 中未定义的属性“get”

VueComponent.mounted:TypeError:无法读取挂载钩子中未定义的属性“get”

XMLHttpRequest在请求nodejs api中未定义GET参数

request.getAttribute()和request.getParameter()两个方法的区别