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

  [Opened] Amélioration bloc formcontrols

Posted by Mike on 07/10/2007 16:14

Bonjour j'ai besoin d'afficher dans mon template de modification que de certains champs de mon formulaire xml. Et en utilisant la branche experimentale jforms, j'ai remarqué que l'on ne pouvait pas (encore?) choisir les champs à afficher avec le bloc {formcontrols} et les fonctions de template {ctrl_value}, etc..

Bref j'ai cherché un peu et j'ai vu que sur le trac il est prévu dans le ticket #184 de pouvoir utiliser les fonctions ctrl_* en dehors de {formcontrols}.

Ce que je propose c'est d'utilisé un tableau en paramètre sur le bloc formcontrols pour lui spécifier les champs à afficher ou éventuellement à exclure. Je pense que se serait plus pratique car l'utilisation du bloc {formcontrols} pour effectuer la boucle sur tout les éléments est un réel avantage.

Exemple avec la méthode proposée:

    {formcontrols array('login','email','ville')}
    <p><b>{ctrl_label}</b>{ctrl_control}</p>
    {/formcontrols}

Serait plus simple que:

    {formcontrols}
    <p><b>{ctrl_label 'login'}</b>{ctrl_control 'login'}</p>
    <p><b>{ctrl_label 'email'}</b>{ctrl_control 'email'}</p>
    <p><b>{ctrl_label 'ville'}</b>{ctrl_control 'ville'}</p>
    {/formcontrols}

Qu'en pensez-vous? Je peux vous proposer une modification éventuellement.

  [Opened] Re: Amélioration bloc formcontrols

Reply #1 Posted by laurentj on 07/10/2007 21:55

Salut,

Idée intéressante. Il faudrait alors que l'on puisse utiliser formcontrols plusieurs fois à l'intérieur d'un même bloc form. Par exemple :

 {form $form ... }
 {formcontrols array('login','email','ville')}
   <p><b>{ctrl_label}</b>{ctrl_control}</p>
 {/formcontrols}
  
 <table>
 {formcontrols}
   <tr><td>{ctrl_label}</td><td>{ctrl_control}</td></tr>
 {/formcontrols}
 </table>
 {/form}

Le deuxième formcontrols afficherait les champs restants. Il faudrait donc que quand on affiche un control (par formcontrol ou ctrl_control), celui soit noté "affiché" quelque part (dans $t->_privateVars['forms_used_ctrl'] par exemple, voir le source des blocs).

À noter que formcontrols prend déjà un premier paramètre optionel. De plus la branche experimentale en question est "fermée", et tout est maintenant dans le trunk, même si ce n'est pas encore terminé.

Si tu veux proposer un patch, ouvre un nouveau ticket, et suit les instructions sur developer.jelix.org pour créer un patch ;-)

  [Opened] Re: Amélioration bloc formcontrols

Reply #2 Posted by Mike on 07/17/2007 13:05

Ca y est j'ai créé un ticket et mis le patch correspondant. Le ticket #223 explique le fonctionnement. Cependant je me pose une question par rapport à la remarque de laurent

 À noter que formcontrols prend déjà un premier paramètre optionel

Ce paramètre est-il possible de le mettre en seconde position car cela n'est pas très pratique à l'utilisation.

Exemple:

 {formcontrols null,array('login','email')}
  ....
 {/formcontrols}

D'autant plus que la valeur null est interprêtée comme la chaîne de caractère 'null'. Peut-être qu'il y a un autre moyen de dire au plugin de template que le premier paramètre est null ou false ou encore vide '' mais je n'ai pas regardé dans les sources.

Merci de me dire si mon patch est correct.

  [Opened] Re: Amélioration bloc formcontrols

Reply #3 Posted by laurentj on 07/17/2007 13:49

Salut,

Ca y est j'ai créé un ticket et mis le patch correspondant

j'ai lu et commenté ;-)

Ce paramètre est-il possible de le mettre en seconde position car cela n'est pas très pratique à l'utilisation.

Oui, on peut, mais faire un {formcontrols array(), $form} n'est pas mieux non plus ;-) Comme je le dis en commentaire de ton patch, vaut peut etre mieux tester le nombre d'argument que l'on donne, et dans le cas où il y en a qu'un, on génère du code PHP qui testera le type de l'argument (en temps réèl quoi) et agira en fonction

D'autant plus que la valeur null est interprêtée comme la chaîne de caractère 'null'.

Oui ce que l'on recoit dans la fonction de block, ce sont des chaines representant le code PHP des arguments, et non des vraies valeurs PHP.

Merci de me dire si mon patch est correct.

cf mes commentaires sur le ticket ;-)

 
Page
  1. Amélioration bloc formcontrols