Frage

Ich neige immer dazu, diese eingebauten Dinge zu vergessen Symfony Funktionen zum Herstellen von Links.

War es hilfreich?

Lösung

Wenn Ihr Ziel darin besteht, in Ihrer gesamten Anwendung benutzerfreundliche URLs zu verwenden, verwenden Sie den folgenden Ansatz:

1) Erstellen Sie eine Routing-Regel für Ihr Modul/Ihre Aktion in der Datei „routing.yml“ der Anwendung.Das folgende Beispiel ist eine Routing-Regel für eine Aktion, die die neuesten Fragen in einer Anwendung anzeigt, standardmäßig auf Seite 1 (unter Verwendung eines Pagers):

recent_questions:
   url:    questions/recent/:page
   param:  { module: questions, action: recent, page: 1 }

2) Sobald die Routing-Regel festgelegt ist, verwenden Sie die url_for() Helfer in Ihrer Vorlage zum Formatieren ausgehender URLs.

<a href="<?php echo url_for('questions/recent?page=1') ?>">Recent Questions</a>

In diesem Beispiel wird die folgende URL erstellt: http://myapp/questions/recent/1.html.

3) Eingehende URLs (Anfragen) werden vom Routing-System analysiert und wenn in der Routing-Regelkonfiguration eine Musterübereinstimmung gefunden wird, werden die benannten Platzhalter (d. h.Die :/page Teil der URL) werden zu Anforderungsparametern.

Sie können auch die verwenden link_to() Helfer zur Ausgabe einer URL ohne Verwendung des HTML <a> Etikett.

Andere Tipps

Dieser Rat gilt für Symfony 1.0.Es wird wahrscheinlich für spätere Versionen funktionieren.

Innerhalb Ihrer sfAction-Klasse:

string genUrl($parameters = array(), $absolute = false)

z.B.$this->getController()->genUrl('yourmodule/youraction?key=value&key2=value', true);

In einer Vorlage:

Dadurch wird ein normaler Link generiert.

string link_to($name, $internal_uri, $options = array());

z.B.link_to('Mein Linkname', 'yourmodule/youraction?key=value&key2=value');

Wenn Sie tatsächlich eine Abfragezeichenfolge mit dieser URL möchten, verwenden Sie außerdem Folgendes:

link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2'));

Andernfalls wird versucht, es als Teil der URL weiterzuleiten und Ihre Aktion wahrscheinlich zu unterbrechen.

Sie können eine URL direkt generieren, ohne zuerst die Regel zu definieren.

Wenn Sie in den Aktionen eine URL generieren möchten, können Sie diese verwenden generierenUrl() Helfer:

$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))

Wenn Sie in den Vorlagen eine URL generieren möchten, können Sie diese verwenden url_for() Helfer:

url_for('[ModuleName]/[ActionName]', $absolute)

Setzen Sie $absolute auf wahr/falsch. Vergessen Sie nicht, echo zu verwenden, wenn Sie es anzeigen möchten.

Aber wenn Sie eine machen wollen Verknüpfung (etwas wie <a href=""></a>), Link zu() Helfer reicht aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top