Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonour,
Je voudrais vous soumettre un immense problème pour moi :
Après avoir créé mon site internet, je voulais passer par la case référencement, et donc formater à ma guise les différents liens de mon site internet.
J'ai donc commencé par créer une nouvelle route :
$route = new Zend_Controller_Router_Route( ':pays/:date', array( 'controller' => 'accueil', 'action' => 'index', 'pays' => null, 'date' => null) ); $router->addRoute('accueil', $route);
Donc en fait je voulais avoir pour url : www.monsite.com/france/2008
Il semblerais que étant donné que pays et date sont facultatifs il fallais que je les set à null pour qu'ils "disparaissent" quand il ne sont pas setté.
Par ce qu'en fait pour tous mes liens j'utilise le Zend Controller Action Helper Url, qui à partir de paramètres me revoie un lien, en fonction des routes.
Donc par la suite j'ai pensé utiliser www.monsite.com/france où donc :date prendra pour valeur sa valeur défaut, soit NULL, il serait donc inactif. Ca marche quand la valeur défault est différente de NULL, mais quand elle est égale à NULL, j'ai une exception qui semblerais être en rapport avec Zend action helper url :
Uncaught exception 'Zend_Controller_Router_Exception' with message 'date is not specified'
L'erreur se produit par ce que j'ai déclaré :
$this->url(array('pays'=>$this->pays),'accueil',false,true);
Donc ici pays prend une nouvelle valeur, et je pensais que date prenais sa valeur par défault vu que je n'avais rien spécifié de particulier pour lui, soit NULL.
J'ai beau avoir essayé de comprendre via la doc, ou via des recherches sur le net, je suis resté sur ma faim sur ce chapitre.
Après j'aimerais bien savoir quoi choisir entre setter les routes via du script, ou via un fichier config.
Merci de me répondre
++
Dernière modification par DarKA (02-10-2008 19:04:36)
Hors ligne
Oooops... C"est une faute de frappe en recopiant le code... mais ce n'est pas la le soucis lol...
C'est dommage que l'on ne puisse pas trouver de sources... La documentation est quasi inexistant sur ce sujet la.
Dernière modification par DarKA (02-10-2008 13:34:14)
Hors ligne
J'ai trouvé une solution.
Pour éviter l'exception je lui passe ses variables désirées avec pour valeur la valeur vide.
$this->url(array('pays'=>$this->pays,'date'=>''),'accueil',false,true);
Je trouve ca laid. Mais je n'ai trouvé que ca qui marche.J'espère que ca pourra aider qui sais.
Dernière modification par DarKA (02-10-2008 19:04:09)
Hors ligne
Et ça?
$this->url(array('pays'=>$this->pays),'accueil',true);
Je sais pas pourquoi tu met 4 paramètres alors que la doc en montre 3...
Hors ligne
Ben en fait le véritable prototype de la fonction est :
url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
Ca montre d'autant plus que la doc est un peu légère à certains endroits lol
Dernière modification par DarKA (03-10-2008 12:01:12)
Hors ligne
Oui aussi, mais ca ne change rien.
Hors ligne
Salut, je suis tombé sur ce post par hasard. Il date un peu mais je réponds quand même, ça pourra toujours aider
Dans ta route, tu as
':pays/:date'
tu indiques qu'il y a deux paramètres : pays et date.
Dans ton appel à cette route avec l'helper url :
$this->url(array('pays'=>$this->pays),'accueil',false,true);
Tu définis le paramètre pays.
Tu as l'erreur date is not specified
C'est très explicite, il suffit qu'en plus de pays, tu définisses date, et le tour est joué.
Hors ligne
Salut,
avez-vous réussi à corriger le problème ?
Je suis moi-même confronté à la même chose, mais je n'ai pas voulu créer un post. Pourtant j'ai reproduit le code de la doc, l'ai réadapté, mais il n'y a rien de sorcier, et je ne sais pas si c'est dû au routage. J'ai l'erreur username is not specified et comme route j'utilise :
$router = $frontController->getRouter();
$route = new Zend_Controller_Router_Route(
'user/:username',
array(
'controller' => 'users',
'action' => 'view',
)
);
$router->addRoute('user', $route);
$frontController->setRouter($router);
et dans mon controller :
echo '<a href="'.$this->view->url(array('username'=>'toto'), 'user'.'">Toto</a>';
J'arrive bien à accéder à l'action "view" de "users", donc là pas de souci au niveau du routage. Si je fais des échos puis exit dans ma méthode, j'ai bien le résultat de mes échos qui s'affiche. Si je vide le contenu de ma view associée, j'ai toujours le message d'erreur. Et si je change le render pour mettre une autre view, j'ai encore le message d'erreur
.
Quelqu'un a-t-il une idée ?
Merci
Hors ligne
DarKA a écrit:
Pour éviter l'exception je lui passe ses variables désirées avec pour valeur la valeur vide.
Code:
$this->url(array('pays'=>$this->pays,'date'=>''),'accueil',false,true);Je trouve ca laid. Mais je n'ai trouvé que ca qui marche.J'espère que ca pourra aider qui sais.
Pareil, même problème et pas trouvé de meilleure solution, d'ailleurs si tu mets "null" (sans les guillemets) ca marche pas non plus...
Hors ligne
Excusez moi de ressuscité ce sujet mais les derniers posts ne semblait pas trouver le sujet résolu.
Je pense que tout vient du premier post ou la personne a tester avec des valeur null :
$route = new Zend_Controller_Router_Route( ':pays/:date', array( 'controller' => 'accueil', 'action' => 'index', 'pays' => null, 'date' => null) ); $router->addRoute('accueil', $route);
Il faut faut juste les remplacer par des quotes vides ('').
A ce moment plus besoin de les préciser dans l'array d'option donné à l'helper URL.
Tester et approuvé
Dernière modification par cold (05-05-2010 18:01:09)
Hors ligne
Pages: 1