更改Twig连接分隔符

3

twig使用~作为字符串连接符,有没有办法将其更改为其他符号?

我知道可以更改其他分隔符,比如块、注释等,但我没有找到任何关于字符串连接的信息。如果有人知道,请告诉我,谢谢!


如果~运算符保持默认行为,那么您可以注册一个执行相同操作的新运算符,请参见此处 - DarkBee
类名应为 Twig_Node_Expression_Binary_Concat - goto
1个回答

1
对于你所谈论的分隔符,TwigLexer只定义了这些符号:
$this->options = array_merge(array(
    'tag_comment' => array('{#', '#}'),
    'tag_block' => array('{%', '%}'),
    'tag_variable' => array('{{', '}}'),
    'whitespace_trim' => '-',
    'interpolation' => array('#{', '}'),
), $options);

正如@DarkBee所提到的,您可以使用https://twig.symfony.com/doc/2.x/advanced.html#operators定义自己的运算符。

您可以在此php类上找到已定义的运算符,以帮助您定义自己的运算符: vendor/twig/twig/lib/Twig/Extension/Core.phpTwig_Extension_Core::getOperators

您的运算符将是

class Project_Twig_Extension extends Twig_Extension
{
    public function getOperators()
    {
        return array(
            array(),
            array(
               '~' => array('precedence' => 40, 'class' => 'Twig_Node_Expression_Binary_Concat', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT),
            ),
        );
    }

    // ...
}

好的,它运行得很好! 然而,我还有一个问题未解决。 我想要的分隔符是分号,这个完美地实现了。但是我的phpstorm不喜欢它,会将其下划线标记为红色,然后取消所有剩余代码的颜色。它本身并没有给出任何错误,只是我的IDE不喜欢它。有什么办法可以解决这个问题吗? - olvenmage
1
我认为Twig或Symfony插件不支持它。您使用的是2017.3.4吗? - goto
我说实话并不确定。 - olvenmage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接