检查字符串是否具有有效的 Twig 语法


Check if string has valid Twig syntax

很简单,在 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/