我已經構建了一個樹枝擴展來做一些事情,其中一個呈現模板。我如何從樹枝內部訪問引擎環境並調用Render方法?從樹枝延伸呈現模板
回答
您可以定義進行擴展,以便它需要的環境。 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)
{
// ...
}
使用此功能用戶可以在樹枝環境實例傳遞給一個樹枝延伸
private $environment;
public function initRuntime(\Twig_Environment $environment)
{
$this->environment = $environment;
}
工作,然後做$ this-> environment-> render() – ojreadmore 2012-06-05 15:59:42
現在不推薦使用initRuntime。 @tvlooy的needs_environment是正確的答案。 – MECU 2015-12-01 22:10:37
@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');
}
}
我需要addtionaly添加'is_safe' => ['html']
避免HTML的autoescaping。
我也註冊了類symfony作爲服務:
app.twig.menu_extension:
class: AppBundle\Twig\MenuExtension
public: false
tags:
- { name: twig.extension }
在嫩枝模板我已經添加{{ myMenu() }}
我"twig/twig": "~1.10"
和Symfony的3.1.3版本
'needs_environment'=> true是真正的交易。 +1 – 2017-01-12 13:26:50
- 1. 樹枝模板 - 如何呈現HTML樹枝模板內
- 2. 細枝未延伸模板
- 3. 樹枝無法呈現模板
- 4. 在Symfony 2.1中呈現樹枝模板
- 5. symfony的樹枝延伸:
- 6. 樹枝延伸 - symfony2環境
- 7. 嫩枝模板延伸忽略
- 8. SonataFormatterBundle樹枝延伸:模板 「......」 沒有定義
- 9. 枝條呈現模板內的模板
- 10. 枝條延伸延伸?
- 11. Symfony2 +樹枝:將標籤轉換爲新的樹枝延伸
- 12. 基於isxmlhttprequest的樹枝延伸
- 13. i18n在我自己的樹枝延伸
- 14. PHP的樹枝延伸錯誤
- 15. symfony的PHP模板伸出樹枝模板
- 16. 如何呈現在樹枝
- 17. 從MongoDB呈現樹枝中的圖像
- 18. Symfony異常頁面上的樹枝模板不呈現頭部
- 19. Symfony2嵌入形式在樹枝模板中呈現
- 20. Symfony2 app.request.get在呈現的樹枝模板中返回null
- 21. OneupUploaderBundle:在樹枝模板中呈現響應消息
- 22. Volt - 模板延伸
- 23. 的嫩枝文件路徑樹枝,延伸
- 24. 樹枝延伸 - PHP相當於枝的包括
- 25. 從控制器和樹枝模板
- 26. 從外部api填充樹枝模板
- 27. 的jQuery與樹枝模板
- 28. Symfony2樹枝加載模板
- 29. CKEditor在樹枝模板+ Symfony2
- 30. 映射和樹枝模板
\ Twig_Function_Method已棄用,請使用\ Twig_SimpleFunction – spectralsun 2013-05-13 23:15:55