2014-02-13 7 views
1

Я пытаюсь добавить общую функцию твига, которая будет вызываться в макете, но результат будет специфичным для каждой страницы в зависимости от заданных параметров.Symfony2 переменная шаблона функции twig

Я не хочу добавлять каждый параметр в функцию веточки.

Есть ли способ найти эти параметры?

Exemple:

layout.html.twig:

{{ my_twig_function() }} 

list.html.twig

{% extends "::layout.html.twig" %} 

{% if test is defined%}test is defined{% endif %} 

myTwigExtension.php:

public function getFunctions() 
{ 
    return array(
     'my_twig_function' => new \Twig_Function_Method($this, 'getParams'), 
    ); 
} 

public function getParams() 
{ 

    // here a way to find all parameters passed to the list.html.twig 

    return "ok"; 
} 

Любые идеи?

+0

Можете ли вы использовать макрос вместо функции? –

+0

Я думаю, что у меня будет такая же проблема с макросом, как и я хочу, чтобы проверить все доступные параметры, заданные текущим контроллером. – user1014102

ответ

0

Вы добавили свой класс MyTwigExtension в качестве службы?

services: 
    twig.twig_extension: 
     class: Namespace\NameBundle\Twig\MyTwigExtension 
     tags: 
      - { name: twig.extension } 
     arguments: [] 
+0

Да, я сделал, но я хочу использовать параметры, заданные каждым контроллером, не передавая их – user1014102

+0

Жаль, что я не понял. На мой взгляд, это невозможно, потому что ваша функция не имеет доступа к переменным вашей страницы. Но с помощью объявления twig_extension service вы можете ввести параметры и/или контейнерную службу и получить доступ к вашим параметрам. Возможно, если вы определяете параметры своей страницы в файле конфигурации, это может ответить на вашу проблему. –

+0

Я хочу использовать параметры, заданные контроллером, не только статические. Мне кажется, мне нужно создать событие типа KernelEvents :: VIEW. Я не могу использовать этот, потому что мой контроллер возвращает ответ. --------- Что вы думаете о переопределении FrameworkBundle: Controller: Controller-> рендеринг и отправка моего пользовательского события? – user1014102

Смежные вопросы