Ho letto tutti i post su routing e documentazione di Zend ma non riesco ancora a risolvere questo problema.Problemi di instradamento di Zend
Ho un'applicazione multi-lingua con due moduli: predefinito e admin. La selezione della lingua sta funzionando benissimo (in un routeShutdown Plugin Controller), ma ho alcuni problemi di configurazione del router:
voglio avere questi lavoro URL:
/
/controller
/controller/action
/action (default controller)
/controller/param (default action)
/admin
/admin/admin-controller
/admin/admin-controller/action
e utilizzando la selezione della lingua, sarebbe :
/en
/en/controller
/en/controller/action
/en/action (default controller)
/en/controller/param (default action)
/en/admin/admin-controller
/en/admin/admin-controller/action
ho aggiunto questo al mio file di bootstap (index.php):
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$router->removeDefaultRoutes();
$router->addRoute('langmodcontrolleraction',
new Zend_Controller_Router_Route('/:lang/:module/:controller/:action',
array('lang' => ':lang'))
);
$router->addRoute('langmodcontroller',
new Zend_Controller_Router_Route('/:lang/:module/:controller',
array('lang' => ':lang',
'action' => 'index'))
);
$router->addRoute('langmod',
new Zend_Controller_Router_Route('/:lang/:module',
array('lang' => ':lang',
'action' => 'index',
'controller' => 'index'))
);
$router->addRoute('lang',
new Zend_Controller_Router_Route('/:lang',
array('lang' => ':lang',
'action' => 'index',
'controller' => 'index',
'module' => 'default'))
);
$frontController->setControllerDirectory(array(
'default'=>BASE_PATH.'app/modules/default/controllers',
'admin'=>BASE_PATH.'app/modules/admin/controllers'));
Al fine di verificare come il router è l'analisi dell'URL, ho aggiunto un var_dump al plugin routeShutdown:
Entrando a /it, ottengo:
array
'lang' => string 'en' (length=2)
'action' => string 'index' (length=5)
'controller' => string 'index' (length=5)
'module' => string 'default' (length=7)
che è OK. Ma quando entro a /it/controller1 ottengo:
array
'lang' => string 'en' (length=2)
'module' => string 'controller1' (length=8)
'action' => string 'index' (length=5)
'controller' => string 'index' (length=5)
E 'impostazione del modulo a "controller1". Come posso dire al router di impostare il valore predefinito sul modulo? E per un URL come/en/controller/param? (impostazione del modulo e azione predefinita)
questa è una risposta molto utile, la tua spiegazione è perfetta, ora capisco come funziona il routing :) grazie! Quando raggiungo 15 rappresentanti. Voterò la tua risposta. Ecco il mio sito Web, dove implementerò questo: [tryandsay.com] (http://www.tryandsay.com) – Gustavo