2014-11-09 1 views
0

У меня проблема с symfony2 на данный момент, и я не знаю, как я могу ее решить. Внутри самостоятельного расширения новой ветви я хочу вызвать контроллер или или вид (файл ветви).Контроллер вызова или просмотр (файл twig) из встроенного расширения twig в smyfony2

Как правильно это реализовать? Вы можете мне помочь? Я читал много интернет-страниц symfony2, но я не нашел для меня хорошего подхода к программированию.

Для лучшего понимания, почему я хочу сделать что-то вроде этого, вот пример: что такое моя идея: Я хочу указать какой-нибудь HTML-код в отдельный вид. Это новое представление встроено в другое представление, вызывая расширение ветки.

Итак, как я могу это понять?

Thanxs для вашей помощи.

+0

я не уверен, я слежу. Woudln't функция 'include' из ветки достаточно? – DarkBee

+0

или '{{render (controller ('Acme: Soemthing: somethingAction'))}}' – qooplmao

ответ

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 } 
Смежные вопросы