Zend框架路由转发

时间:2015-11-04 23:10:49

标签: php zend-framework

我有一个旧网址' / report / details /'现在我想将此网址更改为' / customer_report / details'。控制器名称为reportController,操作为detailsAction。

我设置routes.ini并添加以下内容:

routes.report.route = /customer_report/details/
routes.report.defaults.controller = report
routes.report.defaults.action = details

编辑routes.ini之后,如果我使用url' / cutomer_report / details',它就能完美运行。但是,如果我输入网址' / report / details /',它仍然有效。

有什么方法可以控制每当网址是/ report / details时,它会自动重定向到/ customer_report / details?

PS。我正在使用Zend Framework v1.12

1 个答案:

答案 0 :(得分:1)

如果没有ZF版本的信息,很难回答。 ZFv1已预定义路由,例如/:controller/:action,这就是您的/report/details路由可能仍然有效的原因。您可以更改此默认行为清除默认路由:

$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->removeDefaultRoutes(); 
$router->addRoute(
   'error', 
    new Zend_Controller_Router_Route (
       '/customer_report/details/',
       array (
          'controller' => 'report',
          'action' => 'details'
       )
    )
);

如果要重定向用户,可以将逻辑移至新操作:

public function customerReportAction() {
    // logic from reportAction()
}

并在旧版本中添加http重定向:

public function reportAction() {
   $this->_redirect('/customer_report/details/');
}