从smyfony2中自定义的枝条扩展调用控制器或视图(twig文件)

时间:2014-11-09 17:57:52

标签: php symfony controller twig

我目前在symfony2中遇到了问题,我不知道如何解决它。 在自定义的新树枝扩展中,我想调用控制器或视图(树枝文件)。

如何实现这一目标的正确方法?你能帮助我吗?我已经阅读了很多symfony2网页,但我没有为我找到一个好的编程方法。

为了更好地理解为什么我想做这样的事情,这里有一个例子:我的想法是什么: 我想将一些HTML代码导出到一个单独的视图中。通过调用twig扩展名将此新视图嵌入到另一个视图中。

那么我怎么能意识到这一点呢?

Thanxs的帮助。

1 个答案:

答案 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 }