Wie man zur Laufzeit den Namen der route ein in Symfony2 bei der Verwendung des yaml-Routen-Beschreibung?

Hier finden Sie meine n-te Frage auf Symfony2.

Arbeite ich mit einem Paginierung bundle verwendet den Namen der route ein in die routing.yml - Datei.
Aus meiner Sicht ist dieser Ansatz nicht flexibel und führen zu einer schmutzig-code, denn wenn ich den Namen der route, dann muss ich mal schauen alle die Twig-templates oder PHP-Dateien zu aktualisieren, den Namen der route ein. Das ist ok für kleine Web-Anwendungen, sondern wird ein solcher Fehler auch für größere Anwendungen und müssen auch eine hohe Belastung für die Entwickler.

So, ich Frage mich, übergeben Sie einen string-variable x der Pager - Objekt enthalten, das durch das oben erwähnte bundle. Der string x sollte initialisiert werden, die innerhalb der controller und hat das gewünschte route angegebenen Namen in der routing.yml Datei.

Lassen Sie mich ein Beispiel geben. Die routing-Datei ist die folgende:

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

Dann wird der dazugehörige controller ist:

//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);  
  }
}

Dann, in der twig template, die $pager erhält den Namen der route ein, die sich auf das oben genannte Paket

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

Irgendeine Idee, wie man die 'AcmeTestBundle_listall' string-Wert zur Laufzeit nur im controller?

InformationsquelleAutor JeanValjean | 2012-04-27
Schreibe einen Kommentar