如果Twig模板包含未设置的变量,则行为取决于strict_variables
设置。这两个选项是:
false
(默认值):将变量视为NULL,然后继续渲染模板。true
:抛出异常,然后停止渲染模板。理想情况下,您在开发中使用true
,在生产中使用false
。
然而,我想要的是第三种选择:
有没有办法实现这个目标?
我们正在使用Twig,但在我们自己的环境中,而不是Symfony框架。
答案 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运行时错误,但这可能足以满足您的需求。我忽略了你可能需要的任何服务的依赖注入,但你明白了。