我想创建一个Twig扩展并使用它:
{{ new_func(route-name) }}
Run Code Online (Sandbox Code Playgroud)
做同样的事情:
{{ render_esi(url(route-name)) }}
Run Code Online (Sandbox Code Playgroud)
......但有一些调整
它已接近完成,但这条线需要更改,但我无法看到如何从此代码(在Twig之外)调用ESI:
return $environment->render($route); /// needs to receive route and render an ESI
Run Code Online (Sandbox Code Playgroud)
-
namespace Acme\Bundle\MyBundle\Twig;
class NewTwigFunction extends \Twig_Extension
{
private $request;
public function __construct($container)
{
$this->request = $container->get('request');
}
public function getFunctions() {
return array(
'new_func' => new \Twig_Function_Method($this, 'newFunction', array('needs_environment' => true) )
);
}
public function newFunction(\Twig_Environment $environment, $route) {
$r = $this->request;
return $environment->render($route);
}
public function getName() {
return "new_func";
}
}
Run Code Online (Sandbox Code Playgroud)