Бывает так, что при работе с кодом drupal необходимо вставить ссылку на страницу в twig.
Как это сделать?
Информация с сайта Drupal.org дает руководство по выводу ссылок, как на страницу, так на представления и профили пользователей. Инфа очень полезная, рекомендую записать:
{# Link to frontpage view. #}
<a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
{# Link to user entity/profile page. #}
<a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a>
{# Link to node page. #}
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>
Но, как водиться, не все так просто. Иногда при выводе ссылки на страницу в twig, например, выходит ошибка типа:
Symfony\Component\Routing\Exception\InvalidParameterException: Parameter "node" for route "entity.node.canonical" must match "\d+" ("" given) to generate a corresponding URL. in Drupal\Core\Routing\UrlGenerator->doGenerate() (line 193 of core\lib\Drupal\Core\Routing\UrlGenerator.php).
Мне, как не программисту, не понятно, что все это значит. Я не стал пытаться увеличить объем своих знаний о twig, разбираясь во всех тонкостях кода, деталей которого мне знать временами даже вредно, но пошел общеизвестным и всем доступным путем общения с яндексом и гуглом.
Несколько часов серфинга и вот оно решение с сайта https://drupal.stackexchange.com.
{{ path('entity.node.canonical', { 'node' : row.nid}) }}
Спасибо иностранцам! Теперь и мы знаем, как отобразить ссылку на страницу в шаблонизаторе twig.
Берем. Вставляем в ссылку <a href="">...</a>.Применяем и радуемся жизни.
P.S. Между тем хочется сказать, что существуют абсолютные и относительные ссылки. Пример выше: вставка относительной ссылки. Примеры же абсолютных, то есть не изменяемых ссылок для вставки в twig можно найти там, на сайте drupal.org. Например функция file_url:
{{ file_url('core/modules/system/tests/modules/twig_theme_test/twig_theme_test.js') }}
{# Результат: 'http://example.com/core/modules/system/tests/modules/twig_theme_test/twig_theme_test.js' #}
Вставляет абсолютный путь до ссылки исходя из корня сайта.
Если понравилась статья, поделитесь ею в соцсетях, а если вам есть что сказать - милости прошу в комментарии.