![](/img/trans.png)
[英]How to call Twig extension filter or function from PHP (controller / service / other twig extension etc )?
[英]Call controller or view (twig file) from self defined twig extension in smyfony2
我目前在symfony2中遇到问题,我不知道该如何解决。 在自定义的新树枝扩展中,我想调用控制器或视图(树枝文件)。
如何实现这一目标的正确方法? 你能帮助我吗? 我已经阅读了许多symfony2网页,但没有找到适合我的编程方法。
为了更好地理解为什么我要执行这样的操作,这是我的主意:我想将一些html代码来源到一个单独的视图中。 通过调用树枝扩展,此新视图将嵌入到另一个视图中。
那么我怎么能意识到这一点呢?
感谢您的帮助。
在使用Symfony2时,可以将templating
服务注入到Twig扩展中,然后调用->render
方法。
扩展名
<?php
namespace YourPackage\YourBundle\Twig\Extension;
use Symfony\Component\Templating\EngineInterface;
class Test_Extension extends \Twig_Extension
{
protected $templating;
public function __construct(EngineInterface $templating)
{
$this->templating = $templating;
}
public function getFunctions()
{
return array(
new \Twig_SimpleFunction('my_test', array($this->myTest()), array('is_safe' => array('html')))
);
}
public function myTest()
{
// do some stuffs
$data = $this->templating->render("SomeBundle:Directory:file.html.twig");
// ...
return $data;
}
public function getName()
{
return 'test';
}
}
services.yml
# src/YourPackage/YourBUndle/Resources/config/services.yml
services:
test.test_extension:
class: YourPackage\YourBundle\Twig\Extension\TestExtension
arguments: ['@templating']
tags:
- { name: twig.extension }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.