Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [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

Reply #1 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

Reply #2 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

Reply #3 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

Reply #4 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é.

 
Page
  1. Re: jAuth et jForms avec jelix v1.0beta3