Reputation: 53597
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.
Upvotes: 0
Views: 6903
Reputation: 11
Please check http://webhkp.wordpress.com/2012/01/01/zend-framework-custom-router/ this would solve your porblem.
its done with an ini file. i like to do it this way
Upvotes: 1
Reputation: 11217
You have to specify the defaults when creating the route (see dcaunt's post) OR specify all of the parameters in url view helper (category, controler and action)
Upvotes: 0
Reputation: 58361
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);
Upvotes: 6
Reputation: 30035
$Router=$this->_front->getRouter();
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*');
$Router->addRoute('category', $CategoryRoute);
Try adding a start to specify the existence of extra params
Upvotes: 2