Php – adding a Route to the a Router in Zend Framework

PHProutingzend-framework

I am using the mod-rewrite router.

I am trying to add a Route to the router that will convert the following url:
baseurl/category/aaa/mycontroller/myaction/param/value

to be:
Controller=mycontroller
action=myaction

–parameters–

category=aaa
param=value

I am using the following (not working) in my bootstrap, _front is the frontController

$Router=$this->_front->getRouter();
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*');
$Router->addRoute('category', $CategoryRoute);

The error I get is a thrown router exception when I am using the Zend_View::url() helper (with or without giving it the name of the new route).
The exception is thrown only when I have baseurl/category/….

What am I missing?

What I missed:
Since there was [category] in the url, The router that was used is the one defined above.
When I used the url() helper, I didn't give any value in it to the [category] hence there was no value for this key in the url parts->failure.
Giving a default, makes it work.

Best Answer

You should include the /* as suggested by solomongaby.

If not supplying all of the required parameters (i.e. category, controller and action), you will need to specify defaults.

You can do so as follows:

$Router=$this->_front->getRouter();

$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*',
    array(
        'controller' => 'index',
        'action'     => 'index',
        'category'   => null
    )
);
$Router->addRoute('category', $CategoryRoute);
Related Topic