2
votes

I have a problem with setting Zend_Routing in ini file. While the routes were defined in Bootstrap.php everything worked great. However I decided to move route definitions to separate file because of the growing number of them. So I created a route.ini file in my /configs folder and defined routes there. All routes looks like this:

;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}$"      

In Bootstrap.php I put the following code

$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');

Now when i go to the main page, ie. i won't give any controller or action I want it to use default controller and action, namely 'index/index'. This is how the application worked while routes were defined in Bootstrap. But now, when they are in the ini file going to the main page triggers 'application/delete'. When I delete this routing the script will use route defined earlier. What is surprising these are not the last defined routes. I tried to add another route at the beginning of route.ini file,

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

But this didn't help.

2

2 Answers

2
votes

Don't you need to add a routes section to the routes.ini file?

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

; The rest of your routes...
0
votes

I managed to handle this somehow, although this is not real solution. First, I rewrite section application as it didn't work (don't know why, urls weren't created). After this the default routing was set to logout. When I moved login and logout routes to Bootstrap everything worked fine.