Ответ 1
Если ваш контроллер расширяет контроллер Symfony2
(Symfony\Bundle\FrameworkBundle\Controller\Controller
), вы можете использовать следующие для генерации URL-адресов:
$this->generateUrl('_donutRoute')
Хорошо, я знаю, что я не могу буквально вызвать функцию шаблона ветки с контроллера, но для создания ссылок я обычно делаю {{ 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'),
но как достичь метода пути или эквивалента?
Если ваш контроллер расширяет контроллер Symfony2
(Symfony\Bundle\FrameworkBundle\Controller\Controller
), вы можете использовать следующие для генерации URL-адресов:
$this->generateUrl('_donutRoute')
Если вы хотите, чтобы с параметрами вы использовали следующее:
$this->generateUrl('_donutRoute', array('param1'=>'val1', 'param2'=>'val2'))
Я нашел альтернативный способ сделать это, что, по моему мнению, равен тому, который предложен @d.syph.3r
План должен сделать:
'breadcrumbs' = array(
'Donuts' => 'donutsRoute',
'Bearclaws' => 'bearclawRoute',
'Strawberry bearclaw' => null,
)
Затем в шаблоне ветки выполните:
{% for name, route in breadcrumbs %}
{{ path(route) }}
Преимущество в том, что в этом случае контроллер не генерирует HTML.