【发布时间】:2014-12-02 23:12:06
【问题描述】:
我写了一个自定义的 Twig TagTokenParser 让我在我的模板中写这个:
{% tag "tagtype" argument1="value1" argument2="value3" %}{% endtag %}
它有效,但我想输入动态属性值:
{% tag "tagtype" argument1="{{ myVar.myProp }}" argument2="value3" %}{% endtag %}
这是我编写 TagTokenParser 的方式:
while (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
if ($stream->test(\Twig_Token::NAME_TYPE)) {
// Read the attribute name
$name = $stream->next()->getValue();
// Read the "="
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
// Read the attribute value
$token = $stream->expect(\Twig_Token::STRING_TYPE);
$value = $token->getValue();
如何解析 \Twig_Token::STRING_TYPE 标记中的表达式并将其写入我的 TagNode 编译器?
我尝试将表达式解析为一个新字符串,但是当我在编译它时失去了上下文:
$parameters = $this->parser->getEnvironment()->tokenize($attribute_value);
或者有没有办法将参数值解析为表达式?像这样:
$value = $parser->getExpressionParser()->parseExpression();
非常感谢您的帮助!
【问题讨论】: