tvl*_*ooy 40
您可以定义扩展以使其需要环境.Twig会自动将其传递给该函数.
public function getFunctions()
{
return array(
new \Twig_SimpleFunction(
'myfunction',
array($this, 'myFunction'),
array('needs_environment' => true)
),
);
}
public function myFunction(\Twig_Environment $environment, string $someParam)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*ano 19
使用此功能,用户可以将树枝环境实例传递给树枝扩展
private $environment;
public function initRuntime(\Twig_Environment $environment)
{
$this->environment = $environment;
}
Run Code Online (Sandbox Code Playgroud)
@tvlooy回答给我一个提示,但对我没用.我需要达到的目的是:
namespace AppBundle\Twig;
class MenuExtension extends \Twig_Extension
{
public function getName()
{
return 'menu_extension';
}
public function getFunctions()
{
return [
new \Twig_SimpleFunction('myMenu', [$this, 'myMenu'], [
'needs_environment' => true,
'is_safe' => ['html']
])
];
}
public function myMenu(\Twig_Environment $environment)
{
return $environment->render('AppBundle:Menu:main-menu.html.twig');
}
}
Run Code Online (Sandbox Code Playgroud)
我需要添加'is_safe' => ['html']addtionaly以避免HTML的自动转换.
我还将这个类注册为symfony服务:
app.twig.menu_extension:
class: AppBundle\Twig\MenuExtension
public: false
tags:
- { name: twig.extension }
Run Code Online (Sandbox Code Playgroud)
我在TWIG模板中添加了 {{ myMenu() }}
我使用"twig/twig": "~1.10"和Symfony 3.1.3版本
| 归档时间: |
|
| 查看次数: |
14687 次 |
| 最近记录: |