我目前在symfony2中遇到了问题,我不知道如何解决它。 在自定义的新树枝扩展中,我想调用控制器或视图(树枝文件)。
如何实现这一目标的正确方法?你能帮助我吗?我已经阅读了很多symfony2网页,但我没有为我找到一个好的编程方法。
为了更好地理解为什么我想做这样的事情,这里有一个例子:我的想法是什么: 我想将一些HTML代码导出到一个单独的视图中。通过调用twig扩展名将此新视图嵌入到另一个视图中。
那么我怎么能意识到这一点呢?
Thanxs的帮助。
答案 0 :(得分:0)
当您使用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 }