2010-07-17 8 views
5

In meiner Kuchen-Anwendung habe ich einen Controller "completed_projects". Seine Indexaktion benötigt keine Argumente und listet einige Projekte auf. Verschiedene Seiten können durch example.com/completed_projects/index/page:23 usw.Routes-Konfiguration für benannte Argumente in CakePHP

zugegriffen werden ich die URLs wie diese machen wollen:

example.com/portfolio/page23 

Offensichtlich Ich brauche ein paar Routen für diese zu machen. Ich habe versucht, viele von ihnen mögen:

Router::connect('/portfolio/page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('pass'=>'page:num', 'num'=>'[0-9]+')); 

und auch:

Router::connect('/portfolio/:page:num', array('controller' => 'completed_projects', 'action' => 'index'), array('named'=>'num', 'page'=>'page', 'num'=>'[0-9]+')); 

Ich habe auch versucht, sie wieder und wieder zu modifizieren, aber keiner von ihnen gut funktioniert.

Ich benutze CakePHP 1.3. Jede Hilfe wird geschätzt.

Antwort

1
Router::connect('/portfolio/page:page_num', 
    array('controller'=>'completed_projects', 'action'=>'index'), 
    array('page_num'=>'[\d]+') 
); 

In Ihrem Controller, Zugang page_num mit:

$this->params['page_num']; 
+0

Dies geht page_num (wie 23) an der Aktion, aber ich möchte, dass ein Named-Parameter wie Seite übergeben werden: 2 geführt wird. Danke für die Überlegung, trotzdem zu helfen. –

+0

Sorry, aktualisiert die Antwort auf Ihre Bedürfnisse, hoffentlich :) – Oscar

+0

Nochmals vielen Dank Oscar. Könnten Sie bitte erläutern, wie diese (oder jede) Variable für die Paginierung verwendet wird? Nur eine übergebene Variable im Controller zu erhalten, ist keine Voraussetzung. Ich möchte, dass es ein benanntes Argument (wie Seite: 33) ist, so dass es für die Seitennummerierung verwendet werden kann. Ist es überhaupt möglich? –