我正在使用 Zend 框架做 web 应用程序。我正在使用的库是 1.12
在项目中,我有两个模块,即默认和管理
默认模块有一些静态页面,我已经设置了路由器。在路由器中我设置了控制器和动作,请参考下面的代码。
在引导文件中,
protected function _initModules() {
$defaultstaticRoute = new Zend_Controller_Router_Route(
'/:staticpage',
array('module' => 'default',
'controller' => 'index',
'action' => 'displaystatic',
'staticpage' => '([a-z0-9]+-)*[a-z0-9]+'
),
array(
'staticpage' => '([a-z0-9]+-)*[a-z0-9]+'
)
);
$router->addRoute('defaultstatic', $defaultstaticRoute);
}
在控制器中,
class IndexController extends Zend_Controller_Action
{
public function init()
{
}
public function indexAction()
{
}
public function displaystaticAction()
{
//get the file name from the url
$page = $this->getRequest()->getParam('staticpage');
//render the view
$this->render($page);
}
}
http://myproject/index
如果 url 是这样的,上面的代码可以正常工作
http://myproject/aboutus
但是,如果 url 没有页面名称,比如
http://myproject/
然后它将我重定向到 404 not found 页面,而它必须显示索引页面。
我已经跟踪了这个问题,我发现它出现在索引控制器的 init() 方法中,并且在它进入 404 之后。
我的代码有什么问题?
编辑:
上述问题由 Tim Fountain 给出的解决方案解决,但我发现另一个问题并没有通过上述技巧解决。下面是代码,
在引导文件中:
$servicesstaticRoute = new Zend_Controller_Router_Route(
'services/:pagename',
array('module' => 'default',
'controller' => 'services',
'action' => 'displayservices',
'pagename' => 'index'
),
array(
'pagename' => '([a-z0-9]+-)*[a-z0-9]+'
)
);
$router->addRoute('servicesstatic', $servicesstaticRoute);
对于上面的代码http://myproject/services/index有效但http://myproject/services/无效。