2010-07-27 35 views
0

我不知道如何解决这个问题,或者wat是解决这个问题的最好方法。也找不到足够的信息让我在正确的方式(可能是我的搜索很烂..)Zend Framework在同一地点更改路由中的参数?

无论如何,这是我的问题:

我在引导文件中定义的路径:

protected function _initRoutes() 
    { 
     $router = $this->frontController->getRouter(); 
     $router->removeDefaultRoutes(); 
     $router->addRoute(
      'delete', 
      new Zend_Controller_Router_Route('/:controller/:action/:id/', 
      array('controller' => ':controller', 
       'action' => ':action', 
       'id' => ':id', 
       ) 
      ) 
     ); 
    } 

这适用于我的更新和删除操作。 现在我已将分页添加到索引页。分页需要页面参数。因为我没有在我的路线中设置它,所以它不能通过它,所以我的分页不起作用(如在结果之间切换)。

我明白这一点。但我想要的是,在索引页上的ID参数是没有必要的,并将其替换为页面参数。

试着用页面替换id的另一条路线不起作用。

有没有一种很好的方法可以在引导程序中解决这个问题,或者它是检查操作的最佳方法,并根据操作,索引或更新/删除来定义路由。最好的地方不是插件吗?

任何意见或提示,非常感谢!

回答

1

在应用程序的另一个方面工作时,我回到了同样的问题。我解决了它,通过更多地指定路线。

首先我删除了$router->removeDefaultRoutes();规则。

然后代替(没有工作):

$router->addRoute(
      'crud', 
      new Zend_Controller_Router_Route('/:controller/:action/:id', array('controller' => ':controller', 'action' => ':action', 'id' => ':id')) 
     ); 
     $router->addRoute(
      'pagination', 
      new Zend_Controller_Router_Route('/:controller/:action/:page', array('controller' => ':controller', 'action' => ':action', 'page' => ':page')) 
     ); 

我现在用的这个:

$router->addRoute(
     'crud', 
     new Zend_Controller_Router_Route('/:controller/:action/:id', array('controller' => ':controller', 'action' => ':action', 'id' => ':id')) 
    ); 
    $router->addRoute(
     'pagination', 
     new Zend_Controller_Router_Route('/:controller/index/:page', array('controller' => ':controller', 'action' => 'index', 'page' => ':page')) 
    );