Frage

Ich habe eine Frage unter Berücksichtigung Zend_Controller_Router bekommt. Ich verwende eine modular-Struktur in meiner Anwendung. Die Anwendung basiert auf Zend-Framework integriert. Die normalen Routen sind wie folgt:

/modulename/actionname/

Da ich immer einen Indexcontroller innerhalb meiner Module verwenden, ist es nicht notwendig, es in der URL zu liefern. Nun ich in der Lage bin append params wie folgt aus:

/modulename/actionname/paramkey/paramvalue/paramkey/paramvalue

So ist das normal in ZF ist, denke ich. Aber in einigen Fällen mag ich nicht eine paramKey innerhalb der URL zur Verfügung zu stellen. Zum Beispiel möchte ich ein Blog-Titel in der URL angezeigt werden. Natürlich ist dies für SEO bestimmt:

/blog/show/id/6/this-is-the-blog-title

In diesem Fall ist blog das Modul, show die Aktion. id ist ein paramKey und 6 ist die ID des Blogpost ich zeigen wollen. this-is-the-blog-title ist natürlich die Schlagzeile des Blogpost mit der ID 6. Das Problem ist, dass, wenn ich verwende die assemble()-Methode des Routers wie folgt aus:

assemble(array('module' =>'blog',
               'action' => 'show', 
               'id' => $row['blog_id'],
               $row['blog_headline_de'] . '.html'));

die URL ergibt:

blog/show/id/6/0/this-is-the-blog-title.html

Wie Sie ein 0 als Schlüssel eingeführt sehen. Aber ich will diese 0 weggelassen werden. Ich habe versucht, dies durch die Blogtitle als Schlüssel verwendet wird, wie folgt aus:

assemble(array('module' =>'blog',
               'action' => 'show', 
               'id' => $row['blog_id'],
               $row['blog_headline_de'] . '.html' => ''));

Dies führt zu:

blog/show/id/6/this-is-the-blog-title.html/

Nun ist die 0 weggelassen, aber ich habe den Schrägstrich am Ende bekommt.

Haben Sie eine Lösung haben eine URL ohne 0 als Schlüssel und ohne abschließenden Schrägstrich zu bekommen?

Viele Grüße, Alex

War es hilfreich?

Lösung

Vielleicht möchten Sie eine benutzerdefinierte Route verwenden, für diese:

$router->addRoute(
    'blogentry',
    new Zend_Controller_Router_Route('blog/show/:id/:title',
                                     array('controller' => 'index', 'module' => 'blog'
                                           'action' => 'info'))
);

Und rufen Sie montieren mit der Route als zweiten Parameter. Sehen Sie sich die Zend_Controller_Router_Route Abschnitt der Dokumentation für weitere Einzelheiten (sie sogar Sie Beispiele mit montieren ).

oder in allgemeinerer Art und Weise:

$router->addRoute(
    'generalseo',
    new Zend_Controller_Router_Route(':module/:action/:id/:title',
                                     array('controller' => 'index'))
);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top