2012-07-19 115 views
1

我想在我的网站上设置Zend分页,以便我可以使用保罗爱尔兰的jquery无限滚动插件,但我遇到了我的路线的麻烦。我现在有这些路线设置为我的组织者页:Zend框架多个路由为相同的控制器

//Organizer searches 
    $route = new Zend_Controller_Router_Route('organizer/index/:filter/:page', 
               array('controller'=> 'organizer', 
               'action'=> 'index')); 
    $router->addRoute('organizer', $route); 
    $route = new Zend_Controller_Router_Route('organizer/index/:filter', 
               array('controller'=> 'organizer', 
               'action'=> 'index')); 
    $router->addRoute('organizer', $route); 

它正确地匹配organizer/index/popular顺序,但如果我把一个页码上的过滤器突然出现空。如果我切换订单,organizer/index/popular/2工作得很好,但organizer/index/popular不再有效。我只能使用更具体的路由,因为这是我需要分页的路线,但是我希望包含这两者以适应试图输入url的用户,或者如果我忘记更改我的代码中某处的链接。我可以将多条路线与Zend合并到同一个控制器吗?如果是这样,我做错了什么?

回答

1

你需要给路由不同的名称。你称他们都是'组织者',所以第二个每次都会替换第一个。

你也容易地单路线做到这一点只需在页面变量设置一个默认值:

$route = new Zend_Controller_Router_Route(
    'organizer/index/:filter/:page', 
    array(
     'controller'=> 'organizer', 
     'action'=> 'index', 
     'page' => 1 
    ) 
); 
$router->addRoute('organizer', $route); 
+0

我不知道我可以设置这样的默认值。感谢您的额外信息! – jaimerump 2012-07-19 22:07:17

0

您添加到路由器必须有一个唯一的名称,所以你要添加的第二路由必须有不同的名字,因为你当前的代码路径每次你覆盖的路线organizer。的$router->addRoute()第二个电话更改为这样的事情:

$router->addRoute('organizer2', $route);