Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je suis en train de commencer avec Zend Framework, et je fais un petit blog pour débuter mais maintenant je bloque depuis pas mal de temps au niveau de reécrire les URL.
J'ai trouvé qu'il fallais écrire dans la méthode _initAutoload() du bootstrap comme ci-dessous, mais après cela me fais une page blanche :
protected function _initAutoload() { $moduleLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH)); $frontController = Zend_Controller_Front::getInstance(); $router = $frontController->getRouter(); $route = new Zend_Controller_Router_Route_Regex( 'categorie/[a-z\-]*-([0-9]*)', array('controller' => 'categories', 'action' => 'detail'), array(1 => 'id') ); $router->addRoute($route); return $moduleLoader; }
et mon .htaccess est :
RewriteEngine On RewriteBase /zend_blog/public RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
J'ai une adresse de ce type : http://localhost/zend_blog/public/categories/detail/id/1
Et j'aimerais plutot que ce soit du type : http://localhost/zend_blog/public/categories/[nom_de_la_categorie]
Merci de votre aide
Dernière modification par guice11 (07-08-2010 23:14:04)
Hors ligne
guice11 a écrit:
$route = new Zend_Controller_Router_Route_Regex(
'categorie/[a-z\-]*-([0-9]*)',
array('controller' => 'categories', 'action' => 'detail'),
array(1 => 'id')
);
Et j'aimerais plutot que ce soit du type : http://localhost/zend_blog/public/categories/[nom_de_la_categorie]
Il faut que tu sois plus rigoureux soit tu utilises du pluriel soit tu utilises du singulier ^^
Tu voudrais que l'url soit de ce type : http://localhost/zend_blog/public/categories/[nom_de_la_categorie]-[id_categorie]
De plus, tu n'as pas besoin d'échapper le tiret dans une classe d'expression régulière. Je pense que la syntaxe suivante doit être à peu près correcte :
$route = new Zend_Controller_Router_Route_Regex( 'categories/[a-z-]+-([0-9]+)', array( 'controller' => 'categories', 'action' => 'detail', ), array( 1 => 'id', ) );
Hors ligne
Oui c'est ça, je voudrais que ça soit du type : http://localhost/zend_blog/public/categories/[nom_de_la_categorie]-[id_categorie].
Mais maintenant celà marche mais les lien présent sur la vue "detail" du controlleur "categorise" qui normalement renvoie à la vue "detail" du controlleur "articles" renvoyent à la vue "detail" du controlleur "categories"
Je vois pas pourquoi.
Hors ligne