很简单,在 Symfony2 应用程序中,在服务类的函数中,我想检查作为参数传递的给定字符串是否具有有效的 Twig 语法......
public function checkIfValidTwig($twigString)
{
$isValid = false;
$isValid = someWay->toCheckIf()->itIsValid($twigString);
return $isValid;
}
知道吗?
您可以使用
Twig_Environment::tokenize()
,如果无法解析 Twig 代码,它将Twig_Error_Syntax
抛出异常 - https://twig.symfony.com/doc/2.x/internals.html#the-lexer
class TwigValidator
{
/**
* @var 'Twig_Environment
*/
private $twig;
/**
* @param 'Twig_Environment $twig
*/
public function __construct('Twig_Environment $twig)
{
$this->twig = $twig;
}
/**
* @param string $twigString
*
* @return boolean
*/
public function checkIfValidTwig($twigString)
{
try {
$this->twig->tokenize($twigString);
return true;
} catch ('Twig_Error_Syntax $e) {
return false;
}
}
}
您需要创建约束类,幸运的是,您在这里有在问题上下文中描述的确切过程:
http://labs.octivi.com/validation-constraint-for-twig-template-syntax/