是否可以让Twig force渲染损坏的括号变量{{example}而不抛出异常?

时间:2018-09-07 00:04:16

标签: php laravel symfony templates twig

我正在使用Twig渲染客户生成的模板。如果客户错过了右括号:

当前,twig抛出\ Twig_Error并返回一条消息:

Unexpected "}" in "custom-template-render5b91be77b99485.95837275" at line 2.

是否有可能让Twig渲染尽可能多的变量(可能是模板中的开始变量),然后在获取流氓括号后就放弃?

$parameters = [
  'mine' => 'sentence', 
  'variable' => 'broken',
  'another' => 'broken',
];
$templateString  = "Here is my {{ mine }} with a broken {{ variable } and {{ another }}";
echo $twigEngine->render($templateString, $parameters);

以上显示缺少右括号。如果输出为:

"Here is my sentence with a broken {{ variable } and {{ another }}"

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

在保存用户输入之前先对其进行验证

$error = null;
try {
    $twigEngine->render($templateString, $parameters);
}catch(\Exception $e) {
    $error = $e->getMessage();
}

if ($error) {
    //display error
}else{
    //save customer template        
}