Как получить доступ к функции Twig path () из контроллера? - PullRequest
19 голосов
/ 07 сентября 2011

Хорошо, я знаю, что не могу буквально вызвать функцию шаблона ветки из контроллера, но для создания ссылок я обычно делаю {{ path('_routeName') }}, и это здорово.

Однако теперь я хочу сформулировать некоторые ссылки в контроллере, которые затем будут передаваться в шаблон с помощью таких параметров:

$params = array(
    'breadcrumbs' = array(
        'Donuts' => '/donuts',
        'Bearclaws' => '/donuts/bearclaws',
        'Strawberry bearclaw' => null,
    ),
);
return $this->render('Bundle:Donut:info.html.twig', $params);

За исключением того, что я не хочу жестко кодировать эти ссылки. Что я хотел бы, так это уметь

        'Donuts' => path('_donutRoute'),

а как добраться до метода пути или его эквивалента?

Ответы [ 3 ]

43 голосов
/ 07 сентября 2011

Если ваш контроллер расширяет контроллер Symfony2 (Symfony\Bundle\FrameworkBundle\Controller\Controller), вы можете использовать следующие URL для генерации таких URL:

$this->generateUrl('_donutRoute')

11 голосов
/ 27 августа 2014

Если вы хотите это с параметрами, используйте следующее:

$this->generateUrl('_donutRoute', array('param1'=>'val1', 'param2'=>'val2'))
2 голосов
/ 11 сентября 2011

Я нашел альтернативный способ сделать это, который, по моему мнению, равен предложенному @ d.syph.3r

Планируется сделать:

'breadcrumbs' = array(
    'Donuts' => 'donutsRoute',
    'Bearclaws' => 'bearclawRoute',
    'Strawberry bearclaw' => null,
)

Затем вшаблон ветки, сделайте:

{% for name, route in breadcrumbs %}
   {{ path(route) }}

Преимущество здесь в том, что Контроллер не генерирует HTML в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...