mail[Galette-devel] Grosse modif à venir... ge stion de routes


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Johan Cwiklinski on November 21, 2012 - 00:53:
Salut,

Bon, désolé, je n'ai pas pu m'en empêcher ; je vais encore faire une
grosse modif sur Galette...

J'ai déjà commencé en fait, mais sur un taff hors ligne... un de plus...
 % git branch |grep -c feature
11

:p

Le constat : actuellement, les différentes pages de Galette
correspondent toutes à un fichier PHP distinct. Cette façon de faire
implique une certaine redondance parfois, et devient à mes yeux un peu
trop compliquée à gérer.
Les URL de Galette sont assez longues et complexes, francisées pour
certaines, pas pour d'autres ; c'est un joyeux boxon.

Et je ne parle pas des chemins pour accéder aux parties "publiques" des
plugins, ni du dossier "public" qui me casse les noix depuis bien
longtemps :D

La solution : utiliser un système de routes ; via un framework. L'idée,
c'est d'avoir des URL du type :
* galette/members (pour la liste des membres)
* galette/member/{id} (pour afficher un membre)
* galette/member/{id}/edit (pour modifier un membre)
* galette/member/add (pour ajouter un membre)
* galette/paypal/form (pour l'url du formulaire paypal fourni par un
plugin).

Ces chemins sont parfaitement arbitraires et non définitifs, mais l'idée
est là. Les actuels bouts de code "métier" qui se trouvent dans les
fichiers php seront aussi totalement séparés, on aurait par exemple une
route pour le filtrage du type "galette/filter", actuellement c'est fait
dans gestion_adherents.php.

J'ai envisagé de n'utiliser qu'une bibliothèque qui fournisse ces
possibilités, mais je n'en ai pas trouvé de réellement adaptée.

C'était donc soit partir sur une bibliothèque existante et la modifier
pour les besoins de la cause (beurk, trop compliqué de remonter les
modifications qui pourraient être apportées par l'auteur original) ;
soit partir sur du Zend, mais je trouve la mise en place à la mode Zend
trop compliquée...

Je suis tombé sur un micro framework que je ne connaissais pas, Slim :
http://www.slimframework.com/

J'ai donc commencé à implémenter ça doucettement, je trouve le résultat
assez convainquant pour ma part. Ce ne sera clairement pas au menu de la
0.7.3, mais je n'exclus pas que ce soit fait pour la 0.7.4 ; si
toutefois je décide au final de l'intégrer à Galette (ça peut totu aussi
bien être au menu de galette 0.9.9 hein :p).

Si vous avez des avis/remarques/whatever, je suis preneur :)

Le code (comme dit en début de message) n'est pas publié ; mais je le
tiens à disposition évidemment si quelqu'un veut voir ce que ça donne
et/ou filer un coup de main.

*À noter* : cette modification implique de *très nombreuses*
modifications dans Galette, à quasiment tous les niveaux... Les
modifications ne sont pas énormes dans beaucoup de cas, mais il faut les
faire.

Note complémentaire : Smarty3 "implémente" un concept d'erreurs
attendues (ce n'est pas moi qui l'invente :
http://www.smarty.net/docs/en/api.mute.expected.errors.tpl). Par
exemple, la présence de clés demandées dans des tableaux n'est pas
testée, et on se chope des "undefined index" à tous les coups. Avec
Slim, je ne parviens pas à le faire taire (la fonction mute reste sans
effet).
Je commence doucement à me demander si je ne devrais pas envisager
également à un moment ou un autre le changement du système de templates
aussi (je lorgne vers Twig qui semble vraiment pas mal non plus).

Des avis/remarques/whatever ?

Roman off pour aujourd'hui,
++
-- 
Johan

Attachment: signature.asc
Description: OpenPGP digital signature


Related Messages


Powered by MHonArc, Updated Wed Nov 21 01:00:03 2012