2009-08-27 7 views
10

Sono newbie to Zend framework, sto usando il file .ini per aggiungere rotte nella mia applicazione.Aggiunta di route basate su domini subordinati in Zend framework

Ho 2 percorsi per i diversi moduli che

resources.router.routes.news_view.type = "Zend_Controller_Router_Route_Regex" 
resources.router.routes.news_view.route = "([0-9\-]+)/([a-zA-Z0-9\-]+)\.html" 
resources.router.routes.news_view.defaults.module = "news" 
resources.router.routes.news_view.defaults.controller = "index" 
resources.router.routes.news_view.defaults.action = "view" 
resources.router.routes.news_view.map.1 = "date" 
resources.router.routes.news_view.map.2 = "title" 

resources.router.routes.edu_view.type = "Zend_Controller_Router_Route_Regex" 
resources.router.routes.edu_view.route = "([0-9\-]+)/([a-zA-Z0-9\-]+)\.html" 
resources.router.routes.edu_view.defaults.module = "education" 
resources.router.routes.edu_view.defaults.controller = "index" 
resources.router.routes.edu_view.defaults.action = "article" 
resources.router.routes.edu_view.map.1 = "date" 
resources.router.routes.edu_view.map.2 = "title" 

il pattern URL è come

http://news.mysite.com/27-08-09/sample.html 

http://education.mysite.com/27-08-09/sample.html 

il problema che faccia è l'ultimo percorso definito è assegnato per entrambi i moduli.

qualcuno può suggerire una soluzione per questo.

risposta

15

Hi dopo molto la navigazione nel web mi si avvicinò con questa soluzione per il mio problema

resources.router.routes.www.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.www.route = ":module.findchennai.com" 
resources.router.routes.www.defaults.module = "www" 
resources.router.routes.www.chains.index.type = "Zend_Controller_Router_Route" 
resources.router.routes.www.chains.index.route = ":controller/:action/*" 
resources.router.routes.www.chains.index.defaults.controller = "index" 
resources.router.routes.www.chains.index.defaults.action = "index" 

il codice di cui sopra associa il modulo con sottodominio

resources.router.routes.news.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.news.route = "news.findchennai.com" 
resources.router.routes.news.defaults.module = "news" 

resources.router.routes.edu.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.edu.route = "education.findchennai.com" 
resources.router.routes.edu.defaults.module = "education" 

resources.router.routes.edu.chains.list.type = "Zend_Controller_Router_Route" 
resources.router.routes.edu.chains.list.route = ":categ/:page" 
resources.router.routes.edu.chains.list.defaults.controller = "index" 
resources.router.routes.edu.chains.list.defaults.action = "category" 
resources.router.routes.edu.chains.list.defaults.page = 1 

resources.router.routes.news.chains.list.type = "Zend_Controller_Router_Route" 
resources.router.routes.news.chains.list.route = ":categ/:page" 
resources.router.routes.news.chains.list.defaults.controller = "index" 
resources.router.routes.news.chains.list.defaults.action = "category" 
resources.router.routes.news.chains.list.defaults.page = 1 

Questo risolve il problema che ho affrontato e ora potrebbe mappare correttamente alle seguenti URL

http://news.mysite.com/27-08-09/sample.html 
http://education.mysite.com/27-08-09/sample.html 

Ancora se qualcuno sa come ottimizzare il codice di cui sopra ulteriormente, per favore fatemelo sapere.

+0

Grazie per le informazioni approfondite. Esattamente quello di cui avevo bisogno. –

0

Entrambi i sottodomini chiamano nello stesso index.php?

Se non solo impostano il percorso in base al sottodominio appropriato invece di impostare entrambe le rotte in entrambi i sottodomini.

Se lo fanno o leggere dalla variabile $ _SERVER [ 'HTTP_HOST'] e impostare il percorso corretto in base al sottodominio o impostare una variabile di ambiente nel file .htaccess modo da poter dire che si è in sottodominio.

+1

Ciao, Ho aggiunto un percorso separato che mappa il sottodominio e le rotte ad esso. resources.router.routes.www.type = "Zend_Controller_Router_Route_Hostname" resources.router.routes.www.route = ": module.mysite.com" resources.router.routes.www.defaults.module = "www" resources.router.routes.www.chains.index.type = "Zend_Controller_Router_Route" resources.router.routes.www.chains.index.route = ": controller /: action/*" resources.router.routes.www. chains.index.defaults.controller = "indice" resources.router.routes.www.chains.index.defaults.action = "index" – Nizam

+0

Per favore aggiungilo come risposta. – smack0007