adding a Route to the a Router in Zend Framework

2020-06-06 07:39发布

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.

4条回答
Melony?
2楼-- · 2020-06-06 07:53

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);
查看更多
Viruses.
3楼-- · 2020-06-06 08:02

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

查看更多
成全新的幸福
4楼-- · 2020-06-06 08:05
$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

查看更多
家丑人穷心不美
5楼-- · 2020-06-06 08:10

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)

查看更多
登录 后发表回答