Wie kann ich die aktuelle URL aus einer Twig-Vorlage erhalten?
Ich verwende Twig mit PHP, ohne ein anderes Framework.
Die aktuelle URL finden
Die aktuelle URL wird von Ihrem Webserver bereitgestellt und in den $_SERVER
super-global geschrieben. Führen Sie dieses kleine Skript <?php echo '<pre>'; print_r($_SERVER);
durch Ihren Server und das Stammverzeichnis aus, um die gewünschten Werte zu finden.
Verwandte Fragen zu diesem Thema:
Das Handbuch PHP beschreibt die Art der verfügbaren $_SERVER
-Werte hier .
URL in TWIG abrufen
Nachdem Sie die URL erhalten haben, müssen Sie sie als Template-Variable übergeben, wenn Sie render(...)
in der Twig-Template-Instanz aufrufen. Beispielsweise könnten Sie dies kodieren.
$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));
Um die Variable in der Vorlage zu verwenden, verwenden Sie die {{ variable_name }}
-Syntax.
Die folgenden Funktionen funktionieren in Silex und ganz besonders in Symfony2, da sie die Request-Klasse gemeinsam nutzen (ich habe jedoch nicht getestet):
{{ app.request.getRequestUri() }}
Go http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html
oder: {{ app.request.getUri() }}
für vollen Uri.
Unter Berücksichtigung der optimalen Vorgehensweise sollten Sie zu diesem Zeitpunkt Symfony\Component\HttpFoundation\RequestStack
verwenden.
Siehe http://symfony.com/blog/new-in-symfony-2-4-the-request-stack .
Ab Symfony 2.4 ist es am besten, den Request-Service niemals einzuspeisen, sondern den request_stack-Service stattdessen [...]
In einer Silex-Anwendung könnte dies mit folgendem erreicht werden:
app.request_stack.getCurrentRequest.getUri
Hier etwas, was ich mit dem sliex Framework generisch gemacht habe. Ich denke, meine Lösung ist nicht perfekt, aber sie schafft es.
fügen Sie in Ihrem PHP Code diesen Code hinzu:
$app = new Silex\Application();
// add the current url to the app object.
$app['current_url'] = $_SERVER['REQUEST_URI'];
Dann können Sie in Ihrer Twig-Vorlage tun
{{ app.current_url }}
Lassen Sie mich wissen, was die Grundlinie dieser Methode ist.