webentwicklung-frage-antwort-db.com.de

Twig Templates Engine: Aktuelle URL erhalten

Wie kann ich die aktuelle URL aus einer Twig-Vorlage erhalten?

Ich verwende Twig mit PHP, ohne ein anderes Framework.

17
nKognito

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.

6
erisco

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() }}
27
neemzy

Go http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html

oder: {{ app.request.getUri() }} für vollen Uri.

4
Breith

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
2
Pixadelic

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.

0
Benjamin