В TWIG можно получить абсолютный URL-адрес ссылки с переменными веточки в нем?
У меня есть несколько URL-адресов, которые выглядят следующим образом:
{{domainID}}/action/{{userId}}/anotherAction
И последний URL указывает на:
http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction
Однако, если я пытаюсь загрузить viewA
из viewB
через iframe, ссылка внутри viewA
вместо указания на:
http://localhost/viewA/{{domainID}}/action/{{userId}}/anotherAction
он будет указывать на:
http://localhost/viewB/{{domainID}}/action/{{userId}}/anotherAction
и пользователь окажется на странице 404, если он будет следовать последнему.
Мой вопрос:
В любом случае, чтобы получить абсолютный путь URL-адреса, построенного таким образом в twig?
ИЗМЕНИТЬ
Определение маршрута:
@Route("/domain/details/{domainId}", name="domain_detailed_view")
Я попытался получить абсолютный путь таким образом:
{{ url({{domainID}}/action/{{userId}}/anotherAction) }}
но я получаю эту ошибку:
Хеш-ключ должен быть цитируемой строкой, числом, именем или выражением заключенные в круглые скобки
Ответы
Ответ 1
Функции url
или path
принимают имя маршрута, а не путь. Вы можете дать ему ассоциативный массив в качестве необязательного второго аргумента, если для маршрута требуются параметры.
Например:
{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }}
http://symfony.com/doc/master/reference/twig_reference.html
Ответ 2
Я знаю это старый и ответил, но с symfony 3 и twig вы можете сделать:
{{ app.request.getSchemeAndHttpHost() }}
/* will match even port :) i.e.
* http://localhost:8000
* http://localhost
* http://example.com
*/
что чрезвычайно полезно: D
Ответ 3
У вас есть два способа сделать то же самое.
В общем случае вы можете использовать url()
или путь внутри функции absoulute_url, например absoulute_url (путь (...)). Рассмотрим следующее:
// example 1:
{{ url('domain_detailed_view', { 'domainId': domainId, 'userId': userId }) }}
// example 2:
{{ absolute_url(path('domain_detailed_view', { 'domainId': domainId, 'userId': userId })) }}">
// note - those two do the same thing
Как правило, с Symfony 2.7 вы можете использовать absolute_url() с утверждениями и относительным путем (относительно веб-корневой папки). Так вы можете использовать их для установки абсолютного пути к изображению в комплекте и в основной веб-папке:
[приложение/SRC/UserBundle/Ресурсы/государственные/IMG/image.jpg]
<img src="{{ absolute_url(asset('bundle/user/img/image.jpg')) }}" /> // new way since 2.7 up
<img src="{{ asset('bundle/user/img/image.jpg', absolute: true ) }}" /> // old way below 2.7 removed in symfony 3.0
[веб/CSS/IMG/some.jpg]
<img src="{{ absolute_url('css/img/some.jpg') }}" />
Это то, что Symfony рекомендует использовать при рендеринге просмотра электронной почты.
http://symfony.com/doc/current/email.html