Я построил расширение ветки, чтобы сделать что-то, и один из них отобразит шаблон. Как я могу получить доступ изнутри расширения ветви в среду движка и вызвать метод Render?Render template from twig extension
ответ
Вы можете определить расширение, так что она нуждается в окружающую среду. 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
initRuntime теперь устарел. Правильный ответ - require_environment by @tvlooy. – MECU
@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']
, чтобы избежать autoescaping в HTML.
Я также зарегистрировал класс как симфони службы:
app.twig.menu_extension:
class: AppBundle\Twig\MenuExtension
public: false
tags:
- { name: twig.extension }
в шаблоне TWIG Я добавил {{ myMenu() }}
Я работаю с "twig/twig": "~1.10"
и Symfony 3.1.3 версии
'needs_environment' => true - настоящая сделка здесь. +1 –
- 1. Render object in twig template
- 2. Yii2 Render view from extension
- 3. Render template from session object
- 4. Express Render Template from String
- 5. Drupal 8 Render Content in Twig Template
- 6. Symfony2 twig extension get caller template
- 7. Render twig template не один раз
- 8. Render custom formType option in twig template
- 9. Render image в twig from MongoDB
- 10. Meteor render loading template from javascript
- 11. Django template extension
- 12. Twig: render vs include
- 13. Render Twig without controller
- 14. template twig not found
- 15. twig template engine's form_widget
- 16. Twig template - looping input
- 17. Twig template data swiftmailer
- 18. Django render template variable
- 19. Render file from controller
- 20. PHP twig template
- 21. Intval in Twig Template
- 22. Beego template render partials
- 23. Render parts of template
- 24. Symfony2.2 render ESI template
- 25. VueJs render template issue
- 26. Angular2 render template
- 27. Django Template Form Render
- 28. Render list on template
- 29. Ember render child template
- 30. Flask Render Template Repeating HTML
\ Twig_Function_Method устарел, используйте \ Twig_SimpleFunction – spectralsun