在未设置的Twig变量上报告错误

时间:2017-07-12 14:54:11

标签: php exception twig

如果Twig模板包含未设置的变量,则行为取决于strict_variables设置。这两个选项是:

  1. false(默认值):将变量视为NULL,然后继续渲染模板。
  2. true:抛出异常,然后停止渲染模板。
  3. 理想情况下,您在开发中使用true,在生产中使用false

    然而,我想要的是第三种选择:

    • 抛出异常(将由我们的正常错误处理代码拾取并报告),但也继续渲染模板,就像变量为NULL一样。

    有没有办法实现这个目标?

    我们正在使用Twig,但在我们自己的环境中,而不是Symfony框架。

1 个答案:

答案 0 :(得分:1)

您可以编写custom exception listener来处理此问题。喜欢的东西;

namespace AppBundle\EventListener;

use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Twig_Error_Runtime;

class TwigExceptionListener
{
    public function onKernelException(GetResponseForExceptionEvent $event)
    {
        $exception = $event->getException();

        if (!$exception instanceof Twig_Error_Runtime) {
            return;
        }

        // do whatever you need to do here
    }
}

现在这将捕获所有 Twig运行时错误,但这可能足以满足您的需求。我忽略了你可能需要的任何服务的依赖注入,但你明白了。