2012-02-18 13 views

Odpowiedz

6

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 }}.

+0

Zastanawiam się, czy istnieje jakieś wewnętrzne narzędzie (zmienna metoda ot), aby uzyskać adres URL z Twig? – nKognito

+0

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

0

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.

25

następujące prace w Silex i na pewno w Symfony2 jak oni dzielić klasę życzenie (nie testowałem choć):

{{ app.request.getRequestUri() }} 
+5

'{{app.request.requestUri}}' – eightyfive

+0

Jeszcze lepiej, tak. – neemzy

+1

Jest przestarzały, nie należy go używać. https://github.com/silexphp/Silex/issues/1257#issuecomment-141058724 – Tieme

2

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 
Powiązane problemy