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

时间:2016-06-29 10:42:17

标签: php twig silex

我在树枝模板中有这些线条:

{% 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;

    }

在我的开发环境中,这是完美的工作,但在实时,参数不会传递给方法。我已经检查了live和dev副本相互之间以及我们的存储库 - 一切看起来都很好。

我该如何调试这种情况?

(我在silex框架中工作)

1 个答案:

答案 0 :(得分:2)

您可以使用转储功能http://twig.sensiolabs.org/doc/functions/dump.html输出此变量。

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

composer require symfony/var-dumper

将转储功能添加到树枝

$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 %}