Jak mogę pobrać bieżący adres URL z szablonu Twig?Silnik szablonów Twig: uzyskaj aktualny adres URL:
Używam Twig z PHP, bez żadnych innych ram.
Jak mogę pobrać bieżący adres URL z szablonu Twig?Silnik szablonów Twig: uzyskaj aktualny adres URL:
Używam Twig z PHP, bez żadnych innych ram.
Znalezienie aktualny adres
aktualny adres URL jest dostarczana przez serwer WWW i zapisywane do $_SERVER
super globalny. Uruchom ten mały skrypt, <?php echo '<pre>'; print_r($_SERVER);
, poprzez serwer i root, aby znaleźć wartości, których szukasz.
Powiązane pytania dotyczące tego tematu:
The PHP manual describes the nature of the available $_SERVER
values here.
Uzyskiwanie URL w gałązka
Po uzyskaniu adresu URL, trzeba przekazać ją jako zmienną szablonu podczas wywoływania render(...)
na gałązka instancji szablonu. Na przykład możesz to zakodować.
$current_url = // figure out what the current url is
// pass the current URL as a variable to the template
echo $template->render(array('current_url' => $current_url));
Aby użyć zmiennej w szablonie, należy użyć składni {{ variable_name }}
.
Zastanawiam się, czy istnieje jakieś wewnętrzne narzędzie (zmienna metoda ot), aby uzyskać adres URL z Twig? – nKognito
Możesz znaleźć kod już napisany w tym celu, ale pobranie aktualnego adresu nie leży w zakresie silnika szablonów, więc wątpię, czy Twig ma coś wbudowanego. Na pewno nic nie mogłem znaleźć. – erisco
Tutaj znalazłem coś, co sprawiło, że stał się on generyczny dzięki sliex Framework. Domyślam się, że moje rozwiązanie nie jest idealne, ale jest gotowe.
w kodzie PHP dodać ten kod:
$app = new Silex\Application();
// add the current url to the app object.
$app['current_url'] = $_SERVER['REQUEST_URI'];
Następnie w szablonie Twig można zrobić
{{ app.current_url }}
Daj mi znać, co jest linia botom tej metody.
następujące prace w Silex i na pewno w Symfony2 jak oni dzielić klasę życzenie (nie testowałem choć):
{{ app.request.getRequestUri() }}
'{{app.request.requestUri}}' – eightyfive
Jeszcze lepiej, tak. – neemzy
Jest przestarzały, nie należy go używać. https://github.com/silexphp/Silex/issues/1257#issuecomment-141058724 – Tieme
Go http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html
czyli {{ app.request.getUri() }}
pełnego Uri.
Mając na uwadze najlepsze praktyki, w tym momencie powinieneś użyć Symfony\Component\HttpFoundation\RequestStack
.
Zobacz http://symfony.com/blog/new-in-symfony-2-4-the-request-stack.
Jak z Symfony 2.4, najlepszym rozwiązaniem jest, aby nie wstrzyknąć Service Request, ale wstrzyknąć usługę request_stack zamiast [...]
Więc w aplikacji Silex to może być osiągnięte z :
app.request_stack.getCurrentRequest.getUri
Dlaczego nie przekazać bieżącego adresu URL jako zmiennej szablonu? Możesz też napisać tag szablonu, który wypisze adres URL. –