CakePHP mit optionaler params Routing
Frage
Ich habe eine Methode in meinem Benutzer ähnliche Steuerung an:
function members($type = null, $category = null) { ... }
Beide params sind optional und können zusammen oder allein verwendet werden.
So mit dem folgenden Weg.
Router::connect('/members/*', array('controller' => 'users', 'action' => 'members'));
http://example.com/users/members
erfolgreich wird http://example.com/members
.
Leider ist die folgende nicht funktionieren
http://example.com/members/type:cat
http://example.com/members/category:dog
http://example.com/members/type:cat/category:dog
Wie könnte ich einrichten meine Routen, so dass sie alle arbeiten richtig?
Lösung
Benannte Parameter sind nicht automagicaly die Aktion abgebildet. Sie können sie entweder erhalten durch den Aufruf
$ this-> passedArgs [ 'type'] oder $ this-> passedArgs [ 'Kategorie']
oder durch den dritten Parameter im Router mit :: connect:
Router::connect(
'/members/*',
array('controller' => 'users', 'action' => 'members'),
array(
'pass' => array('type', 'category')
)
);
Andere Tipps
Versuchen Sie es mit
Router::connect('/members/type\:(.*)', array('controller' => 'users', 'action' => 'members_type'));
Router::connect('/members/category\:(.*)', array('controller' => 'users', 'action' => 'members_category'));
Router::connect('/members/type\:(.*)/category:(.*)', array('controller' => 'users', 'action' => 'members_type'));
Beachten Sie, dass ich es nicht testen, aber ich glaube, Sie müssen den Doppelpunkt entkommen.