我需要加载并显示Twig模板的源代码。
模板的getSource()方法似乎可以通过使用反射来查找自己的类文件,并在其末尾读取注释块(具有Twig代码)。
public function getSource()
{
$reflector = new ReflectionClass($this);
$file = $reflector->getFileName();
// ...
}
不幸的是,该文件仅在从文件缓存加载模板时可用 - 在此之前,该类在运行时定义,ReflectionClass将返回Environment.php(403) : eval()'d code
作为类文件。
if (!class_exists($cls, false)) {
$content = $this->compileSource($this->getLoader()->getSource($name), $name);
if ($this->bcWriteCacheFile) {
$this->writeCacheFile($key, $content);
} else {
$this->cache->write($key, $content);
}
eval('?>'.$content);
}
有没有其他方法可以从Twig获取源代码,或者只有在我直接找到并阅读原始.html.twig
文件时才有可能?
答案 0 :(得分:0)
糟糕。答案就在代码中,当然:
$content = $this->compileSource($this->getLoader()->getSource($name), $name);
我只需要用$environment->loadTemplate($name)->getSource()
替换$environment->getLoader()->getSource($name)
。