Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous
Je travaille sur un projet utilisant Zend Framework et je rencontre une difficulté.
Selon le Cahier des charges je dois recevoir une url de type http://monsite.com/user/toto (ici, toto est le nom du client).
Le problème est que Zend_controller attend une action (et la view qui va avec) à la place de toto et donc affiche : "An error occurred Page not found". Il est clair que je ne peux pas créer une action par utilisateur.
J'ai pensé à utiliser une redirection dans le .htaccess mais le client peut effectuer des requetes PUT, DELETE ou GET sur cette url et la redirection fait automatiquement un GET. Mon traitement dépend entièrement de cette méthodes http donc je ne peux pas m'en passer.
J'aimerai donc savoir s'il existe un moyen d'avoir une action qui utiliserait "toto" comme paramètre. (Un peu comme on utilise la méthode __get($value)). Ou un quelconque moyen de signifier que "toto" n'est pas l'action et qu'il passe pas indexAction.
J'espère être assez clair.
Si quelqu'un a une idée...
Dernière modification par Rouzz (25-06-2010 09:11:33)
Hors ligne
T'as juste à faire une route "Zend_Controller_Router_Route" ou route = "/user/:login/*"
Hors ligne
Merci beaucoup pour ton aide !
Il me reste un petit problème, j'ai intégré ce code à mon index.php :
$route = new Zend_Controller_Router_Route(
'user/:username',
array(
'controller' => 'user',
'action' => 'index'
)
);
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController ->getRouter();
$router->addRoute('user', $route);
Mais quand j'appelle http://monsite.com/user/toto j'ai une erreur du navigateur. Par contre http://monsite.com/user/index m'affiche bien l'index.
D'ailleurs, si j'appelle n'importe quelle action qui n'existe pas, je n'ai pas de "page not found" mais une erreur de lien corrompu (du navigateur et non pas une erreur Zend).
Est-ce à mettre ailleurs que dans l'index.php ? Ou alors j'ai oublié quelque chose ?
Hors ligne
Okay j'ai trouvé, je l'avais mis après le $application->bootstrap()->run();
Je l'ai remonté et ça marche nickel !
Merci encore
Hors ligne
Ce sujet est donc [résolu] ?
Hors ligne
Oups, pardon
Hors ligne