Zend framework Zend路线包罗万象
请帮忙!我是Zend的新手,希望修改我正在进行的cms项目的默认路由 如果控制器不存在,我如何在zend中创建“全面覆盖”路由 我正在尝试创建如下链接: mydomain.com/slug mydomain.com/slug1 其中slug和slug1可以作为参数传递给指定的默认控制器(pagesController),这样我就可以从数据库中获取适当的内容Zend framework Zend路线包罗万象,zend-framework,zend-route,Zend Framework,Zend Route,请帮忙!我是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);
}