Wie erhalte ich zur Laufzeit den Routennamen in Symfony2, wenn ich die yaml-Routenbeschreibung verwende?

Hier finden Sie meinen-te Frage zu Symfony2.

Ich arbeite mit einemPaginierungsbündel das verwendet den Routennamen, der in derrouting.yml Datei. Aus meiner Sicht ist dieser Ansatz nicht flexibel und führt zu einem unsauberen Code. Wenn ich den Namen der Route ändere, muss ich alle Twig-Vorlagen oder PHP-Dateien prüfen, um den Routennamen zu aktualisieren. Dies ist für kleine Webanwendungen in Ordnung, führt jedoch zu einem solchen Fehler bei größeren Anwendungen und erfordert eine hohe Belastung für den Entwickler.

Also habe ich mich gefragt, ob ich eine String-Variable übergeben sollx zumPager Objekt aus dem oben genannten Bundle. Die Saitex sollte innerhalb des Controllers initialisiert werden und muss den gewünschten Routennamen wie in angegeben angebenrouting.yml Datei.

Lassen Sie mich ein Beispiel geben. Die Routing-Datei lautet wie folgt:

<code>//routing.yml
 AcmeTestBundle_listall:
pattern:  /test/page/{page}
defaults: { _controller: AcmeTestBundle:List:listall, page: 1 }
requirements:
    page:  \d+   
</code>

Dann ist der zugehörige Controller:

<code>//use something....
class ListController extends Controller
{

  public function exampleAction($page)
  {
    $array = range(1, 100);
    $adapter = new ArrayAdapter($array);
    $pager = new Pager($adapter, array('page' => $page, 'limit' => 25));

    return array('pager' => $pager);  
  }
}
</code>

Dann wird in der Zweigvorlage die$pager empfängt den Routennamen, der auf das oben genannte Bundle verweist

<code>{% if pager.isPaginable %}
   {{ paginate(pager, 'AcmeTestBundle_listall') }}
{% endif %}
{% for item in pager.getResults %}
   <p>{{ item }}</p>
{% endfor %}
</code>

Haben Sie eine Idee, wie Sie den Zeichenfolgenwert 'AcmeTestBundle_listall' zur Laufzeit direkt in der Steuerung abrufen können?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage