2016-08-09 64 views
0

In meinem Symfony2 Anwendung umleiten möchte ich bestimmte Routen für meine Seiten, mit meiner SEO arbeiten gut, aber ich erhalte einige ernste Probleme und ich nicht sie verstehen ..Symfony2 Routen zu falschen Controller

Beispiel:

Zwei Routen:

blog_article: 
    path: /blog/{slug} 
    defaults: {_controller: ApplicationEDBlogBundle:Blog:singleArticle} 

product: 
    path: /{category}/{name} 
    defaults: { _controller: MpShopBundle:Product:view} 

die product Route funktioniert gut, aber die blog_article Route leitet immer auf product Strecke ..

In meinem Verständnis, wenn ich blog öffnen: /blog/firstBlog/ standardmäßig denkt es, dass der Blog eine Kategorie und firstBlog ist der Produktname, weil meine product Route die letzte Route ist.

Aber wenn in meinem Zweig ich konkret sagen, welche Route zu gehen, sollte es nicht funktionieren?

Zum Beispiel: {{ path('blog_article', {slug: blog.slug}) }}. Sollte dies nicht die Route blog_article betrachten und den benötigten Controller öffnen? Oder funktioniert das nicht?

Wenn ja, wie halte ich meine hübschen URLs so, wie ich es möchte?

Antwort

0

Nein, ist es nicht so funktioniert, dh Ihr Codebeispiel Pfad bedeutet nicht, dass das Routing für die blog_article Route aussehen sollte:

Der Zweig Pfad-Funktion erweitert nur die Route in die eigentliche URL (/ blog/yourlug) und wenn tatsächlich auf diese URL zugegriffen wird, führt das System die Übereinstimmung umgekehrt von der URL zur Route durch (passend zu dem, was zufällig die erste der oben aufgeführten zwei Routendefinitionen ist).

Wenn Sie diese Art von Routen haben, ist die Lösung, sie sauber in der richtigen Reihenfolge (die meisten Generika - das Produkt in diesem Fall - immer die letzte) zu haben, oder wenn die Bestellung nicht möglich ist, können Sie Versuchen Sie, dies zu lösen, indem Sie gegebenenfalls bestimmte Routenanforderungen festlegen.

0

Änderung Routing

blog_article: 
    path: /blog/{slug} 
    defaults: {_controller: ApplicationEDBlogBundle:Blog:singleArticle} 

product: 
    path: /cat/{category}/{name} 
    defaults: { _controller: MpShopBundle:Product:view} 

und wird in Ordnung sein.

In Ihrem Beispiel {Kategorie} könnte "Blog" sein, so wurde die erste Route zugeordnet.

Es kann auch funktionieren, wenn Sie die Reihenfolge ändern (Produkt wird zuerst). Aber es ist keine gute Lösung (was, wenn jemand Kategorie Blog hinzufügen?)