Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
salut à tous je passe de la 1.0.4 à la 1.7
oui je sais c'est le grand écart
je viens de tomber sur un petit pb
dans la 1.0.4 mes actions portaient des noms en Camel Case ex : getListAction showFormAction
et en passant à la 1.7 je tombe sur une erreur plutôt surprenante
Fatal error: Uncaught exception 'Zend_Controller_Action_Exception' with message 'Action "getlist" does not exist and was not trapped in __call()'
j'ai mis un certain temps à comprendre que cela venait de la majuscule
gasp une énorme régression getList doit s'écrire getlist showForm showform etc.
je ne sais pas d'où viens la décision d'un tel choix mais c'est contraire à toutes les règles codage
A+JYT
Hors ligne
Sinon je crois qu'il faut appeler dans l'url avec un /controlleur/get-list
Hors ligne
Et renommer le dossier view en show-form.phtml
Hors ligne
Hello,
Sinon pour aller vite (si c'est nécessaire), tu as un flag pour revenir dans l'ancien mode. Regardes le chapitre migration dans Zend_Controller (passage de 1.0 à 1.5, de mémoire).
A+
Hors ligne
je ne cherche pas à revenir en arrière je m'étonne d'une telle décision qui à mon avis ne va pas dans la bonne direction;
ça dénormalise le code et ça c'est jamais bon.
A+JYT
Hors ligne
Hello,
C'est bien dit dans la doc : "Option la moins souhaitable : vous pouvez forcer le distributeur à distribuer les noms d'action écrits en notationCamel avec un nouveau drapeau du contrôleur frontal, useCaseSensitiveActions".
Il est parfois dommage de retarder une évolution parce qu'on a une centaine d'actions et de vues à renommer. Ce flag permet de rapidement tester une nouvelle version sans tout casser le code. Ensuite tu peux au fur et à mesure engager la migration et une fois terminée, désactiver le flag.
A+
Hors ligne
vouais... je me suis plié aux nouvelles règles mais pas de bonne grâce
Hors ligne
Ce choix a été fait, car il facilite l'indexation des moteurs de recherche, mais c'est vrai que vu du développeur, c'est pas terrible :-(
Hors ligne
Du coup, on a des showlistAction, des showformAction... Heureusement que nos méthodes d'action ne sont pas longues. Pour les méthodes privées, on peut reprendre le camelCase.
Hors ligne
Et pourquoi mettre 'show' devant toutes tes fonctions ??
listAction suffit. Si t'es dans un controller "groupe", c'est compréhensible, sans compter le sous classement module.
Vous êtes vraiment difficiles..
Hors ligne
nORKy a écrit:
Et pourquoi mettre 'show' devant toutes tes fonctions ?? listAction suffit.
Bah tiens c'est pas bête ça, on prend des habitudes, on s'y tient, et un beau jour on se demande pourquoi ?
Mr Sekaijin, je sais que tu vas rebondir sur ce qui suit...
Dans nos contrôleur de type CRUD, nous avions la liste des actions suivantes :
showList(RETRIEVE),
add (CREATE), edit(UPDATE), showForm, checkForm, save,
delete, confirm, remove(DELETE)
Seules trois actions sont concernées par ce "souci" et rien n'empêche d'abréger tout en restant parfaitement compréhensible :
list,
add, edit, form, check, save,
delete, confirm, remove
Les notions de module et de contrôleur sont effectivement suffisant (a priori) pour que ces mots soient significatifs dans leur contexte.
Pour désigner une action on ne devrait avoir que des verbes et je sèche un peu pour remplacer 'form'... un show tout seul n'est pas très parlant et c'est d'ailleurs la raison du showForm originel ! Un 'get' peut-être ou un 'ask' ?...
Existe-t-il des "best practices" sur ces nommages ?
Hors ligne
oui effectivement on peut toujours chercher un contournement qui soit plus ou moins acceptable
ça ne change pas le fond du problème qu'introduire une règle qui dénormalise n'apporte rien de bon.
que faire si dans un Contrôleur sur les contact j'ai deux action list ou get pour les groupes et les contacts par exemple ?
on pourra toujours trouver une solution
mais ne pas garder le camel case qu'est-ce que ça apporte à ZF ? je ne vois rien
A+JYT
Hors ligne
Hello,
sekaijin a écrit:
mais ne pas garder le camel case qu'est-ce que ça apporte à ZF ? je ne vois rien
Ben, tu peux le garder ! Tes nommages de vues et appels de liens doivent cependant changer.
Action : showListAction => Vue : show-list.phtml => Lien : /index/show-list
ou
Action : showlistAction => Vue : showlist.phtml => Lien : /index/showlist
A+
Hors ligne