Php 如何在Twig扩展中获取令牌解析器中的变量
我无法在我的小树枝扩展中传递正确的数据 令牌解析器Php 如何在Twig扩展中获取令牌解析器中的变量,php,symfony,twig,Php,Symfony,Twig,我无法在我的小树枝扩展中传递正确的数据 令牌解析器parse函数示例: public function parse(\Twig_Token $token) { $parser = $this->parser; $stream = $parser->getStream(); $firstVariable = $stream->getCurrent(); } 表达式{%myTag“someString”%}将$firstVariable设置为“s
parse
函数示例:
public function parse(\Twig_Token $token)
{
$parser = $this->parser;
$stream = $parser->getStream();
$firstVariable = $stream->getCurrent();
}
表达式{%myTag“someString”%}
将$firstVariable
设置为“someString”
但是,如果我们设置了一个变量:
{% set someVariable = "someString" %}
{% myTag someVariable %}
最终得到的名称类型值为“someVariable”,而不是预期的变量值“someString”
如何正确解析自定义细枝标记的第一个参数,允许输入为字符串或包含字符串的变量
编辑
看起来您可以只取变量名并在返回的细枝节点中使用它
public function compile(){
$compiler->write('echo "$context[$variableName]"');
}
但我需要在编译之前访问它
编辑
我不再相信在编译之前可以访问上下文。除非任何人有更多关于这个主题的信息可供分享,否则这个问题就是哑巴。是的,细枝代码首先转换为解析树,然后编译,然后执行。因此,只有在运行时才能访问变量的值。我就这个问题写了一个完整的答案。