J'ai un projet que j'ai démarré sans utiliser de structure de module en ZF 1 maintenant je dois placer une structure de module pour gérer les utilisateurs (cela me semble plus logique).ZF Zend_Controller_Router_Route_Module Avec et sans un chemin par défaut du module
Mon problème de la route "par défaut" devrait essayer d'aller avec: controller /: action /: id et la route du module
devrait aller avec: module /: controller /: action /: id la valeur par défaut de ZF 1 est pour utiliser ce qui précède sans le: id
mais ma "logique" nécessite le champ: id, comment puis-je faire ce travail?
Ce que je suis venu ai essayant:
protected function _initModuleAutoload()
{
$modelLoader = new Zend_Application_Module_Autoloader(
array('namespace' => 'DM',
'basePath' => APPLICATION_PATH . '/modules/default')
, array('namespace' => 'UM',
'basePath' => APPLICATION_PATH . '/modules/users')
);
$modelLoader->addResourceType('service', 'services', 'Service');
$modelLoader->addResourceType('serviceplugin', 'services/plugins', 'Service_Plugin');
return $modelLoader;
}
public function _initFrontController()
{
$front = Zend_Controller_Front::getInstance();
$router = $front->getRouter();
$route1 = new Zend_Controller_Router_Route(
':module/:controller/:action/:id/',
array(
'id' => '\d+'
, 'module' => 'default'
, 'controller' => 'index'
, 'action' => 'index'
)
);
$router->addRoute('default', $route1);
$front->addModuleDirectory(APPLICATION_PATH . "/modules/");
$front
->registerPlugin(new Far_Access_Plugin_Identity(), 1)
->registerPlugin(new Far_Access_Plugin_Access(), 2)
->throwExceptions(true)
;
return $front;
}
également essayé de créer une deuxième voie pour les utilisateurs au lieu de défaut, mais ne fonctionne pas.
Des idées? Qu'est-ce que je fais mal?
Une aide de irc dans freenode a été donnée dans le canal #zftalk quand j'ai fourni ce lien.
Bittarman: crash82: ajouter des exigences à l'identifiant, donc il doit être [\ d] +
Bittarman: ou, ajoutez une instance de Zend_Controller_Router_Route_Module enchaîné à Zend_Controller_Router_Route avec juste: id dans ce , avec un ensemble par défaut pour id comme false.
Bittarman: aussi, _initModuleAutoload, est inutile Bittarman: avoir votre 'défaut' module dans les modules dir, est peu mal
Bittarman: et vous arrêter la ressource frontController de travail en ayant un _initFrontController
Bittarman: si resources.frontController ne fonctionnera plus.crash82: hum ... Tant de problèmes :(, donc je peux placer le module « par défaut » dans le répertoire d'applications et d'autres modules peut continuer à être chargé à partir des modules/chemin
?Bittarman: oui :)
crash82: va essayer Bittarman: et, chaque module qui a une amorce, fournit sa propre ressource du module chargeur
Bittarman: donc, si vous allez créer plus comme ça, vous finissez avec deux pour chaque module.
Bittarman: vous seriez surpris de voir combien de personnes le font.
Bittarman: s/THT/que/
Le routage par défaut dans la version actuelle de ZF teste toujours le module lors du routage. L'ajout d'un module n'affectera pas le routage si vous utilisez des routes par défaut. Il suffit d'ajouter le module en tant que premier paramètre et cela devrait fonctionner. si vous voulez, consultez le code dans 'Zend_Controller_Router_Route_Module' – RockyFord
Oui cela fait partie de la réponse. :-) Merci –