php文件无法提取表单变量,php – 无法从表单类型的查询构建器函数访问全局变量...

我正在尝试在Form类型中将参数设置为查询构建器.我想将影响变量设置为表单字段查询构建器.我从表单选项中获得了影响

public function buildForm(FormBuilderInterface $builder, array $options)

{

$builder->add('title');

$parentPage = $options["parentPage"];

$impact = $options["impact"];

if($parentPage != null){

$builder->add('parent', 'entity', array(

'class' => "CoreBundle:Page",

'choices' => array($parentPage)

));

}else{

$builder->add('parent', 'entity', array(

'class' => "CoreBundle:Page",

'query_builder' => function(PageRepository $pr){

$qb = $pr->createQueryBuilder('p');

$qb->where("p.fullPath NOT LIKE '/deleted%'");

$qb->andWhere('p.impact = :impact')

->setParameter('impact', $impact);

return $qb;

},

));

}

为什么这段代码显示错误,它说$impact是未定义的变量.是不是可以从buildForm函数中的任何位置访问的全局变量?

解决方法:

问题是你需要显式指定传递给闭包的变量(也就是query_builder函数):

$builder->add('parent', 'entity', array(

'class' => "CoreBundle:Page",

'query_builder' => function(PageRepository $pr) use ($impact) { // ADD

$qb = $pr->createQueryBuilder('p');

$qb->where("p.fullPath NOT LIKE '/deleted%'");

$qb->andWhere('p.impact = :impact')

->setParameter('impact', $impact);

return $qb;

},

));

标签:doctrine-orm,query-builder,php,symfony,symfony-forms

来源: https://codeday.me/bug/20190823/1701649.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值