例如,我正在为用户个人资料/信息中心使用以下网址:
example.com/person/person/profile
example.com/person/person/dashboard
人 模块,第二人是控制器和个人资料, 信息中心是操作。
但我希望如果用户转到以下网址,那么他们应该指出上面分别提到的相同网址:
example.com/person/profile
example.com/person/dashboard
有没有办法总是从URL中删除模块名称?记住我想保留当前的目录结构。
由于
答案 0 :(得分:5)
你可以使用路由,在你的bootstrap中添加这个
protected function _initRoutes()
{
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini');
$router = new Zend_Controller_Router_Rewrite();
$router->addConfig($config, 'routes');
Zend_Controller_Front::getInstance()->setRouter($router);
}
然后在你的配置导演中创建一个名为routes.ini
的文件,这将包含你的自定义路线,试试这些
routes.person_profile.route = "person/profile"
routes.person_profile.defaults.controller = person
routes.person_profile.defaults.action = profile
routes.person_profile.defaults.module = person
routes.person_dashboard.route = "person/dashboard"
routes.person_dashboard.defaults.controller = person
routes.person_dashboard.defaults.action = dashboard
routes.person_dashboard.defaults.module = person
这里我们定义两条路线,记住给每个路线一个我称之为person_profile
和person_dashboard
的唯一名称。
route
值是将被controller
,action
和module
值覆盖的URI,例如路由person/profile
将自动覆盖已分派到person
控制器,person
模块和profle
操作。
希望有所帮助。