首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony和Omines组件

Symfony和Omines组件
EN

Stack Overflow用户
提问于 2018-12-08 03:35:42
回答 1查看 405关注 0票数 0

我有以下问题:

代码语言:javascript
复制
->createAdapter(ORMAdapter::class, [
    'entity' => Systems::class,
    'query' => function (QueryBuilder $builder) {
    $builder
    ->select('systems')
    ->from(Systems::class, 'systems')
    ->orderBy('systems.level', 'ASC')
    ->addorderBy('systems.label', 'ASC')
    ->andwhere('systems.territory = :SearchTerritory')
    ->setParameter('SearchTerritory', 'Independent');
    },

这样的代码是有效的,但是当我将‘独立’替换为变量$territory作为示例时,它不起作用,并且消息是该变量未被声明。在创建datatable之前转储变量表明变量设置正确,所以不知何故,全局控制器变量没有发送到datatable,而我不知道如何发送。

下面是完整的代码:

代码语言:javascript
复制
public function territoryList($territory, Environment $twig, Request $request)
{

    $table = $this->createDataTable()
    ->add('label', TextColumn::class, ['label' => 'Name'])
    ->add('level', TextColumn::class, ['label' => 'Level'])
    ->add('coordinates', TextColumn::class, ['label' => 'Coordinates'])
    ->add('territory', TextColumn::class, ['label' => 'Territory'])
    ->add('missions', BoolColumn::class, ['label' => 'M', 'searchable' => false, 'trueValue' => '<i class="fas fa-check"></i>', 'falseValue' => '<i class="fas fa-times"></i>'])
    ->add('parsteel', BoolColumn::class, ['label' => 'PS', 'searchable' => false, 'trueValue' => '<i class="fas fa-check"></i>', 'falseValue' => '<i class="fas fa-times"></i>'])
    ->add('tritanium', BoolColumn::class, ['label' => 'TT', 'searchable' => false, 'trueValue' => '<i class="fas fa-check"></i>', 'falseValue' => '<i class="fas fa-times"></i>'])
    ->add('dilithium', BoolColumn::class, ['label' => 'DL', 'searchable' => false, 'trueValue' => '<i class="fas fa-check"></i>', 'falseValue' => '<i class="fas fa-times"></i>'])
    ->add('rawgas', BoolColumn::class, ['label' => 'RG', 'searchable' => false, 'trueValue' => '<i class="fas fa-check"></i>', 'falseValue' => '<i class="fas fa-times"></i>'])
    ->add('rawcrystal', BoolColumn::class, ['label' => 'RC', 'searchable' => false, 'trueValue' => '<i class="fas fa-check"></i>', 'falseValue' => '<i class="fas fa-times"></i>'])
    ->add('rawore', BoolColumn::class, ['label' => 'RO', 'searchable' => false, 'trueValue' => '<i class="fas fa-check"></i>', 'falseValue' => '<i class="fas fa-times"></i>'])

    ->createAdapter(ORMAdapter::class, [
        'entity' => Systems::class,
        'query' => function (QueryBuilder $builder) {
        $builder
        ->select('systems')
        ->from(Systems::class, 'systems')
        ->orderBy('systems.level', 'ASC')
        ->addorderBy('systems.label', 'ASC')
        ->andwhere('systems.territory = :SearchTerritory')
        ->setParameter('SearchTerritory', 'Independent');
        },


        ])
        ->handleRequest($request);

        if ($table->isCallback()) {
            return $table->getResponse();
        }

没有细枝渲染等

EN

回答 1

Stack Overflow用户

发布于 2019-01-25 05:20:24

在PHP中,匿名函数,比如作为query参数提供的回调,是私有作用域的,不能隐式访问外部变量。有关参考,请参阅PHP文档中的the section about inheriting variables from the parent scope

要导入$territories变量,您必须对其执行use操作,即。

代码语言:javascript
复制
'query' => function (QueryBuilder $builder) use ($territories) { ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53675817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档