- 1
[Opened] jAuth et jForms avec jelix v1.0beta3
Posted by e-media on 10/12/2007 11:49
Tout d'abord merci à Laurent pour cet excellent framework et tout ceux qui contribuent au projet, déjà bien abouti dans sa version 1.0beta3.
Facile à apprendre et avec une doc complète et des tutos bien fait pour débuter ! de plus une communauté active et qui va grandissante...
Tout ceci contribue au final au choix du framework qui s'impose naturellement... jelix.org ;-)
- Une première remarque sur jAuth :
j'ai utilisé jauth (en beta2.1 sans aucun pb) depuis la beta3 si je mets un timeout pour l'expiration de session différent de 0 donc, dans le fichier ini qui va bien, j'ai 3 erreurs qui remontent :
[1] mktime() [<a href='function.mktime'>function.mktime</a>]: You should be using the time() function instead /var/jelix/lib/jelix/plugins/coord/auth/auth.coord.php 90 [1] mktime() [<a href='function.mktime'>function.mktime</a>]: You should be using the time() function instead /var/jelix/lib/jelix/plugins/coord/auth/auth.coord.php 82 [1] mktime() [<a href='function.mktime'>function.mktime</a>]: You should be using the time() function instead /var/jelix/lib/jelix/plugins/coord/auth/auth.coord.php 87 . .
En remplacant le mktime par time, plus d'erreur et je retrouve un fonctionnement normal.
- a propos de jForms et des dates
Si les champs dates sont null en BD et non renseigné dans le formulaire de saisie, jForms les transforme lors de la sauvegarde avec une DAO en une date 0000-00-00 00:00:00, ne serait-il pas possible de mettre NULL lors des ordres insert et update de la DAO ? (ceci casse l'intégrité de la base de données avec une date erronée.)
Sinon une parade possible pour l'affichage est de mettre cette ligne
if ($this->year==0&&$this->month==0&&$this->day==0) $str=""; .
dans chaque case traitant des dates de la fonction toString() de lib/jelix/utils/jDateTime.class.php
par exemple pour le case BD_DFORMAT:
case self::BD_DFORMAT: $str = sprintf('%04d-%02d-%02d', $this->year, $this->month, $this->day); if ($this->year==0&&$this->month==0&&$this->day==0) $str="";//<--- Ajouter cette ligne pour chaque case break;
- jForms, Dao et clé sur plusieurs champs
Peut-on avoir un exemple de jForms et de DAO avec une clé non pas sur un seul champs mais sur deux champs. J'ai essayé d'adapter le crudtuto3 en passant comme id de jForm un tableau de clé (array('ID1','ID2'))
<a href="{jurl 'module~controleur_view',array('id'=>array($record->ID1,$record->ID2))}">voir</a>
et j'ai eut l'erreur suivante (justifiée):
Illegal offset type in isset or empty /var/jelix/lib/jelix/forms/jForms.class.php 71 Illegal offset type in isset or empty /var/jelix/lib/jelix/forms/jForms.class.php 51 .
J'ai donc passé, une concaténation des valeurs de clé et là c'est jDaoBase qui générait une erreur car il attendait un tableau à deux entrées :
array_combine() [<a href='function.array-combine'>function.array-combine</a>]: Both parameters should have an equal number of elements /var/jelix/lib/jelix/dao/jDaoBase.class.php 257 . .
Merci pour vos réponses et en espérant que mes remarques puissent servir.
e-media
[Opened] Re: jAuth et jForm avec jelix v1.0beta3
Posted by laurentj on 10/12/2007 16:01
Salut,
Merci pour les compliments d'abord :-)
Une première remarque sur jAuth
Oui, c'est corrigé dans la beta 3.1 qui va sortir incéssement sous peu
Si les champs dates sont null en BD et non renseigné dans le formulaire de saisie, jForm les transforme lors de la sauvegarde avec une DAO en une date 0000-00-00 00:00:00, ne serait-il pas possible de mettre NULL lors des ordres insert et update de la DAO ?
Tu as essayé en mettant required=false dans la propriété dans la dao ? (donc required=false dans le jforms)
Pas sûr que ça fonctionne. Si ça ne fonctionne pas, créer un ticket sur http://developer.jelix.org
Sinon une parade possible pour l'affichage est de mettre cette ligne dans chaque case traitant des dates de la fonction toString() de lib/jelix/utils/jDateTime.class.php
Non, il faut que ce soit gérer dans le DAO. Quand tu demandes une date à jDateTime, il faut qu'il te renvoi une date (logique non ? ;-) ). Donc c'est à jforms d'appeler ou non jDateTime en fonction de ce qu'il reçoit.
Peut-on avoir un exemple de jForms et de DAO avec une clé non pas sur un seul champs mais sur deux champs. J'ai essayé d'adapter le crudtuto3 en passant comme id de jForm un tableau de clé (array('ID1','ID2'))
Normalement, c'est prévu de pouvoir gérer une clé à plusieurs champs, mais je n'ai pas vraiment testé. Créé un ticket à ce propos.
[Opened] Re: jAuth et jForm avec jelix v1.0beta3
Posted by e-media on 10/12/2007 18:13
En ce qui concerne la date 0000-00-00 00:00:00 elle est acceptée par la base.
Mais humainement parlant, je ne connais pas le jour 00 du mois 00, c'est en celà que je dit que l'intégrité de la base n'est pas respecté.
De plus dans les IHMs, je ne pense pas que les utilisateurs comprennent une telle date, c'est pour celà que je proposais de modifier jDateTime.class.php (même si effectivement je suis d'accord avec toi que la classe doit retourner une date, mais là on est dans la méthode toString... et la chaine vide est aussi une chaîne, non ?)
Dans ma Dao le champs required est omis donc si par défaut il vaut false, ça aurait du le faire.
Je vais tout de même tester en mettant required="false" dans la Dao.
e-media
[Opened] Re: jAuth et jForms avec jelix v1.0beta3
Posted by e-media on 10/15/2007 10:06
Ok,
J'ai créé les tickets 305 pour les dates à NULL lors des insert update de la DAO et 306 pour les clés sur plusieurs champs.
e-media
[Opened] Re: jAuth et jForms avec jelix v1.0beta3
Posted by laurentj on 11/13/2007 22:39
Les bugs signalés sont maintenant corrigés pour la prochaine version de Jelix. Merci e-media de les avoir signalé.
- 1