Zend framework Zend路线包罗万象

Zend framework Zend路线包罗万象,zend-framework,zend-route,Zend Framework,Zend Route,请帮忙!我是Zend的新手,希望修改我正在进行的cms项目的默认路由 如果控制器不存在,我如何在zend中创建“全面覆盖”路由 我正在尝试创建如下链接: mydomain.com/slug mydomain.com/slug1 其中slug和slug1可以作为参数传递给指定的默认控制器(pagesController),这样我就可以从数据库中获取适当的内容 我感谢任何帮助!!:) 一种方法是编写一个简单的控制器插件,测试一个请求是否可以发送,如果不能,则将其发送到您的页面控制器/操作: <

请帮忙!我是Zend的新手,希望修改我正在进行的cms项目的默认路由

如果控制器不存在,我如何在zend中创建“全面覆盖”路由

我正在尝试创建如下链接:

mydomain.com/slug

mydomain.com/slug1

其中slug和slug1可以作为参数传递给指定的默认控制器(pagesController),这样我就可以从数据库中获取适当的内容


我感谢任何帮助!!:)

一种方法是编写一个简单的控制器插件,测试一个请求是否可以发送,如果不能,则将其发送到您的页面控制器/操作:

<?PHP
class PageRouter extends Zend_Controller_Plugin_Abstract {

  public function preDispatch(Zend_Controller_Request_Abstract $req) {
    $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
    if (!$dispatcher->isDispatchable($req, $req)) {

      $req->setModuleName('default');
      $req->setControllerName('page');
      $req->setActionName('page');
    }
  }

}

您也可以在routeShutdown中执行此操作,而不是覆盖preDispatch。这是我唯一的办法。

你是救命恩人!!我很接近,只是不确定如何使用插件中的isDispatchable。谢谢你的帮助,蒂姆德夫!!
protected function _initFrontControllerPlugins() {
    $this->bootstrap('FrontController');

    $fc = $this->getResource('FrontController');

    $pluginPageRouter = new PageRouter();
    $fc->registerPlugin($pluginPageRouter);    
}