【问题标题】:Report error on unset Twig variables报告未设置的 Twig 变量的错误
【发布时间】:2017-07-12 14:54:11
【问题描述】:

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

  1. false(默认):将变量视为 NULL,并继续渲染模板。
  2. true:抛出异常,停止渲染模板。

理想情况下,您应该在开发中使用 true,在生产中使用 false

不过,我想要的是第三种选择:

  • 抛出异常(我们的正常错误处理代码会拾取并报告异常),但也会继续呈现模板,就好像变量为 NULL。

有什么办法可以做到吗?

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

【问题讨论】:

    标签: php exception twig


    【解决方案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 运行时错误,但这可能足以满足您的需要。我为您可能需要的任何服务省略了依赖注入,但您明白了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 2014-10-06
      • 2021-12-25
      相关资源
      最近更新 更多