2016-11-01 12 views
0

я определил свой маршрут так:Как получить ссылку на маршрут в Slim3 Twig?

$app->get('/about', function ($request, $response, $args) { 
    return $this->view->render($response, 'about.twig'); 
})->setName('about.page'); 

я заинтересован, чтобы получить ссылку маршрут по имени, как: {% get_route('about.page') %}

Как я могу добиться этого?

ответ

2

В Slim3 есть path_for(name) функция. F.ex:

{{ path_for('about.page') }} 

Ссылка: http://www.slimframework.com/docs/features/templates.html

slim/twig-view компонент предоставляет пользовательскую функцию path_for() в шаблонах Twig. Вы можете использовать эту функцию для создания полных URL-адресов для любого именованного маршрута в своем Slim-приложении. path_for() функция принимает два аргумента:

  • 1 Название маршрута
  • 2 Хеш имен маршрута заполнителей заменяемых и заменяющих

Примечание: path_for использует функцию маршрутизатора, который $router->pathFor(..)

Почему бы не использовать {%

{% - это структурный элемент управления в твинге, отображается Message: Unknown "path_for" tag in "base.twig" at line XX., потому что нет такого тега, как структура управления, определенная так, что веточка не знает, что это фактически функция. Итак, используйте выходной конструктор в ветке {{.

1

Возможно ли это?

Да.

IIRC

{{ path_for('about.page') }} 

Ссылка:

https://github.com/slimphp/Twig-View/blob/master/src/TwigExtension.php#L37

+0

Я получаю там только сообщение: Неизвестный путь «path_for» в «base.twig» в строке 39. 'что мне писать как функцию? – Michelle

+0

Нет, функция уже встроена. Проверьте правильность названия пути. –

+0

@ Michelle функция запечена в тонкий пакет Twig-View. https://github.com/slimphp/Twig-View/blob/master/src/TwigExtension.php#L37 – geggleto