Twig 无法在实时环境中传递可选参数

Twig fails to pass an optional parameter on live enviroment

我在树枝模板中有这些行:

{% for line in order.getItems() %}
    {% set os = line.option.getOverstock(true)|first %}

其中指的是这个方法:

public function getOverstock($getQtyOrdering = false) {
        if ($getQtyOrdering === false) {
            return $this->overstock;
        }

        //sort the collection by the quantity field before returning
        $iterator = $this->overstock->getIterator();
        $iterator->uasort(function ($a, $b) {
            return ($a->getQty() < $b->getQty()) ? 1 : -1;
        });
        $sortResult = new \Doctrine\Common\Collections\ArrayCollection(iterator_to_array($iterator));
        return $sortResult;

    }

在我的开发环境中,这工作得很好,但在现场,参数没有传递给方法。我已经检查了实时副本和开发副本以及我们的存储库 - 一切看起来都很好。

如何调试这种情况?

(我在 silex 框架中工作)

你可以使用dump函数http://twig.sensiolabs.org/doc/functions/dump.html来输出这个变量。

或通过以下方式添加 symfony 包 symfony/var-dumper

composer require symfony/var-dumper

为 twig 添加转储功能

$app->extend('twig', function ($twig) use ($app, $request) {
    $twig->addFunction('dump', new \Twig_SimpleFunction('dump', '\dump'));

    return $twig;
});

并在模板中输出这个变量

{% for line in order.getItems() %}
    {{ dump(line.option.getOverstock(true)|first) }}
    {{ dump(line.option.getOverstock(true)) }}
    {{ dump(line) }}
    {% set os = line.option.getOverstock(true)|first %}