Zend - 使用* .ini文件时的默认路由

时间:2011-03-13 14:59:02

标签: zend-framework routing

我在ini文件中设置Zend_Routing时遇到问题。虽然这些路线是在Bootstrap.php中定义的,但一切都很顺利。但是我决定将路由定义移到单独的文件中,因为它们的数量越来越多。所以我在/ configs文件夹中创建了一个route.ini文件,并在那里定义了路由。所有路线都是这样的:

;login
routes.login.route = "login"
routes.login.defaults.controller = "auth"
routes.login.defaults.action = "login"

routes.lang_login.route = ":lang/login"
routes.lang_login.defaults.controller = "auth"
routes.lang_login.defaults.action = "login"
routes.lang_login.reqs.lang = "^[a-z]{2}$"

rotues.logout.route = "logout"
routes.logout.defaults.controller = "auth"
routes.logout.defaults.action = "logout"

rotues.lang_logout.route = ":lang/logout"
routes.lang_logout.defaults.controller = "auth"
routes.lang_logout.defaults.action = "logout"
routes.lang_logout.reqs.lang = "^[a-z]{2}$"

;regulation routing
routes.regulation_edition.route = "regulations/:edition"
routes.regulation_edition.defaults.controller = "regulations"
routes.regulation_edition.defaults.action = "show"
routes.regulation_edition.reqs.edition = "^[0-9]{4}-[0-9]{4}$"

routes.lang_regulation_edition.route = ":lang/regulations/:edition"
routes.lang_regulation_edition.defaults.controller = "regulations"
routes.lang_regulation_edition.defaults.action = "show"
routes.lang_regulation_edition.reqs.edition = "^[0-9]{4}-[0-9]{4}$"
routes.lang_regulation_edition.reqs.lang = "^[a-z]{2}$"

routes.regulation_edit_edition.route = "regulations/edit/:edition"
routes.regulation_edit_edition.defaults.controller = "regulations"
routes.regulation_edit_edition.defaults.action = "edit"
routes.regulation_edit_edition.reqs.edition = "^[0-9]{4}-[0-9]{4}$"

routes.lang_regulation_edit_edition.route = ":lang/regulations/edit/:edition"
routes.lang_regulation_edit_edition.defaults.controller = "regulations"
routes.lang_regulation_edit_edition.defaults.action = "edit"
routes.lang_regulation_edit_edition.reqs.edition = "^[0-9]{4}-[0-9]{4}$"
routes.lang_regulation_edit_edition.reqs.lang = "^[a-z]{2}$"



;applications

rotues.application.route = "application/:id"
routes.application.defaults.controller = "applications"
routes.application.defaults.action = "show"
routes.application.reqs.id = "^[0-9]+$"     

rotues.lang_application.route = ":lang/application/:id"
routes.lang_application.defaults.controller = "applications"
routes.lang_application.defaults.action = "show"
routes.lang_application.reqs.lang = "^[a-z]{2}$"
routes.lang_application.reqs.id = "^[0-9]+$"

rotues.edit_application.route = "application/edit/:id"
routes.edit_application.defaults.controller = "applications"
routes.edit_application.defaults.action = "edit"
routes.edit_application.reqs.id = "^[0-9]+$"

rotues.lang_edit_application.route = ":lang/application/edit/:id"
routes.lang_edit_application.defaults.controller = "applications"
routes.lang_edit_application.defaults.action = "edit"
routes.lang_edit_application.reqs.id = "^[0-9]+$"
routes.lang_edit_application.reqs.lang = "^[a-z]{2}$"

rotues.delete_application.route = "application/delete/:id"
routes.delete_application.defaults.controller = "applications"
routes.delete_application.defaults.action = "delete"
routes.delete_application.reqs.id = "^[0-9]+$"

rotues.lang_delete_application.route = ":lang/application/delete/:id"
routes.lang_delete_application.defaults.controller = "applications"
routes.lang_delete_application.defaults.action = "delete"
routes.lang_delete_application.reqs.id = "^[0-9]+$"
routes.lang_delete_application.reqs.lang = "^[a-z]{2}$"

;user

routes.user.route = "user/:id"
routes.user.defaults.controller = "users"
routes.user.defaults.action = "show"
routes.user.reqs.id = "^[0-9]+$"

routes.lang_user.route = ":lang/user/:id"
routes.lang_user.defaults.controller = "users"
routes.lang_user.defaults.action = "show"
routes.lang_user.reqs.id = "^[0-9]+$"
routes.lang_user.reqs.lang = "^[a-z]{2}$"

routes.edit_user.route = "user/edit/:id"
routes.edit_user.defaults.controller = "users"
routes.edit_user.defaults.action = "edit"
routes.edit_user.reqs.id = "^[0-9]+$"

routes.lang_edit_user.route = ":lang/user/edit/:id"
routes.lang_edit_user.defaults.controller = "users"
routes.lang_edit_user.defaults.action = "edit"
routes.lang_edit_user.reqs.id = "^[0-9]+$"
routes.lang_edit_user.reqs.lang = "^[a-z]{2}$"

routes.delete_user.route = "user/delete/:id"
routes.delete_user.defaults.controller = "users"
routes.delete_user.defaults.action = "delete"
routes.delete_user.reqs.id = "^[0-9]+$"

routes.lang_delete_user.route = ":lang/user/delete/:id"
routes.lang_delete_user.defaults.controller = "users"
routes.lang_delete_user.defaults.action = "delete"
routes.lang_delete_user.reqs.id = "^[0-9]+$"
routes.lang_delete_user.reqs.lang = "^[a-z]{2}$"

routes.promote_user.route = "user/promote/:id"
routes.promote_user.defaults.controller = "users"
routes.promote_user.defaults.action = "promote"
routes.promote_user.reqs.id = "^[0-9]+$"

routes.lang_promote_user.route = ":lang/user/promote/:id"
routes.lang_promote_user.defaults.controller = "users"
routes.lang_promote_user.defaults.action = "promote"
routes.lang_promote_user.reqs.id = "^[0-9]+$"
routes.lang_promote_user.reqs.lang = "^[a-z]{2}$"       

;schools

routes.edit_school.route = "school/edit/:id"
routes.edit_school.defaults.controller = "schools"
routes.edit_school.defaults.action = "edit"
routes.edit_school.reqs.id = "^[0-9]+$"

routes.lang_edit_school.route = ":lang/school/edit/:id"
routes.lang_edit_school.defaults.controller = "schools"
routes.lang_edit_school.defaults.action = "edit"
routes.lang_edit_school.reqs.id = "^[0-9]+$"
routes.lang_edit_school.reqs.lang = "^[a-z]{2}$"        

routes.delete_school.route = "school/delete/:id"
routes.delete_school.defaults.controller = "schools"
routes.delete_school.defaults.action = "delete"
routes.delete_school.reqs.id = "^[0-9]+$"

routes.lang_delete_school.route = ":lang/school/delete/:id"
routes.lang_delete_school.defaults.controller = "schools"
routes.lang_delete_school.defaults.action = "delete"
routes.lang_delete_school.reqs.id = "^[0-9]+$"
routes.lang_delete_school.reqs.lang = "^[a-z]{2}$"      

在Bootstrap.php中,我输入以下代码

$this->bootstrap('frontController');
$router = $this->getResource('frontController')->getRouter();
$route_config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/route.ini', 'production');
$router->addConfig($route_config, 'routes');

现在我去主页,即。我不会给任何控制器或动作我希望它使用默认控制器和动作,即'index / index'。这是在Bootstrap中定义路由时应用程序的工作方式。但现在,当他们在ini文件中进入主页面时会触发'application / delete'。当我删除此路由时,脚本将使用先前定义的路由。 令人惊讶的是,这些并不是最后定义的路线。我试图在route.ini文件的开头添加另一个路由,

routes.default.route = "/"
routes.default.defaults.controller = "index"
routes.default.defaults.action = "index"

但这没有帮助。

2 个答案:

答案 0 :(得分:2)

您是否需要在routes文件中添加routes.ini部分?

[routes]
routes.login.route = "login"
routes.login.defaults.controller = "auth"
routes.login.defaults.action = "login"

; The rest of your routes...

答案 1 :(得分:0)

我设法以某种方式处理这个问题,虽然这不是真正的解决方案。首先,我重写部分应用程序,因为它不起作用(不知道为什么,网址没有创建)。在此之后,默认路由设置为注销。当我将登录和注销路由移动到Bootstrap时,一切正常。