Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je travaille avec Zend 1.8 et je voudrais réécrire mes url afin de passer de cette url : http://localhost/nomsiteweb/public/concession/index/id/1
à une url du type : http://localhost/nomsiteweb/Consession_machin
concession ==> controleur
index ==> action
id==> parametre
1 ==> valeur parametre
Concession_ ==> chaine fixe
machin ==> valeur récupéré dans la base mysql en fonction du paramètre
Merci d'avance de votre aide,
Dernière modification par Mr.MoOx (26-06-2009 10:59:50)
Hors ligne
Bon,
Comme ma question à l'air compliqué j'ai essayé de trouvé par moi même mais c'est galère !!!!
Je suis persuadé de ne pas être très loin mais j'ai ce message d'erreur :
Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (ml)
L'url appelé est : http://127.0.0.1/monsite/public/concession_1.html
Je travaille avec Wamp et Zend 1.8
Voici mon bootstrap :
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headTitle()->setSeparator(' - '); $view->headTitle('Concession'); $frontController = $this->getResource('FrontController'); $frontController->throwExceptions(true); // renvoie les exceptions au lieu de les ajouter à la réponse // $frontController->throwExceptions(false); // utilise ErrorController $frontController->setBaseUrl('/autoscoot/public'); $response = new Zend_Controller_Response_Http(); //$response->setRawHeader('Content-type: text/html; charset=utf-8'); $frontController->setBaseUrl('http://127.0.0.1/monsite/public'); // passage de la réponse configurée au système MVC $frontController->setResponse($response); $router = $frontController->getRouter(); $route = new Zend_Controller_Router_Route_Regex( '/concession_(.+).html', array( 'module'=>'default', 'controller' => 'Concession', 'action' => 'Index' ), array( 1=>'id' ), 'concession_%d.html' ); $router->addRoute('routeId', $route); } protected function _initAutoload() { $moduleLoader = new Zend_Application_Module_Autoloader(array( 'namespace' => '', 'basePath' => APPLICATION_PATH)); return $moduleLoader; } }
Merci de m'aider car je suis complètement pommé
Hors ligne
Salut,
Je pense que ta regex est pas bonne, essaie ça :
concession_(\d+).html
de plus je ne sais pas si il faut pas mettre de slash avant concession.....
Dernière modification par manuscle (23-06-2009 11:37:56)
Hors ligne
Merci,
Maintenant ca marche. Voici le code source
$router = $frontController->getRouter(); $route = new Zend_Controller_Router_Route_Regex( '(.+)-(.+)', array( 'controller' => 'Concession', 'action' => 'index' ), array( 1 => 'concess_nom', 2 => 'concess_ville' ), 'public/%s-%s' ); $router->addRoute('concession2', $route);
J'ai même supprimer la chaine concession
Hors ligne