Version actuelle
0.8.4.2
 

Forums

Un problème, une idée d'amélioration ?
C'est ici que ça se passe !

You are not logged in.

Announcement

Suivez l'actualité du développement de Hyla sur son blog : http://blog.hyla-project.org/

#1 2010-02-16 18:00:32

Lionel
Membres
Registered: 2010-02-03
Posts: 9

Fonction avec variables

Bonjour, Une petite question...

Je veux afficher un texte si une variable est égale à un nombre, un exemple pour comprendre :

<select name="choix">
<option value="1" {$choix==1|afficher:'selected'}>OUI</option>
<option value="0" {$choix==0|afficher:'selected'}>NON</option>
</select>

La syntaxe est juste pour l'exemple, si c'est quelque chose comme ça :
{$choix|egale:1|afficher:'selected'}
{!egaleAff:$choix,1,'selected'}

cela me convient aussi...

C'est peut être déjà possible sous une autre forme ?

Offline

 

#2 2010-02-16 18:21:29

Lionel
Membres
Registered: 2010-02-03
Posts: 9

Re: Fonction avec variables

Je viens de voir les sources de Hyla pour voir comment c'était conçu (pour les cases à cocher), c'est pas très jolie...

Offline

 

#3 2010-02-17 11:09:40

Lionel
Membres
Registered: 2010-02-03
Posts: 9

Re: Fonction avec variables

J'ai réfléchi un peu plus à ce sujet, je me demande quel est l'intérêt d'avoir une fonction qui accepte des paramètres après une variable comme ceci :

{$variable|fonction:'parametre'}

Dans ce cas, la variable sert à quoi si on ne s'en sert pas ? si on ne la défini pas, la fonction ne se lancera pas, je viens de tester.. Est ce que cela a un intérêt ? Si on veut lancer une fonction sans variable, on a la syntaxe avec le !

Je proposerai plutôt que de lancer fonction(parametre) quand variable est défini comme actuellement de lancer function($variable,'parametre') quand variable est défini.
Pour cela, sauf erreur, il y a juste à rajouter une ligne dans le code :

                    if ($name!==null) array_unshift($parameter, $name);

Après la ligne (~362) qui contient
self::_extractParam

Je ne sais pas ce que vous en pensez et si c'est une bonne idée et si le code est propre et bon.

Si je peux me permettre au passage, ce serait sympa d'indiquer ce que font les expressions régulières.

Sinon, j'arrive à faire ce que je veux pour le moment avec votre script smile

Last edited by Lionel (2010-02-17 19:39:17)

Offline

 

#4 2010-02-17 14:34:36

hugo
Administrateur
Registered: 2007-04-10
Posts: 807

Re: Fonction avec variables

Salut,

> La syntaxe est juste pour l'exemple, si c'est quelque chose comme ça :
> {$choix|egale:1|afficher:'selected'}
> {!egaleAff:$choix,1,'selected'}


Tu as juste à créer une fonction afficher comme ceci :

function afficher($val, $param) {
    return (int)$val ? $param : null;
}



> Je viens de voir les sources de Hyla pour voir comment c'était conçu (pour les cases à cocher), c'est pas très jolie...

Hyla 0.8.2 n'utilise pas le moteur de gabarit Hyla_Tpl mais l'ancien directement issue de la phpLib donc, oui, c'est très très beau...


{$variable|fonction:'parametre'}

> Dans ce cas, la variable sert à quoi si on ne s'en sert pas ? si on ne la défini pas, la fonction ne se lancera pas, je viens de tester.. Est ce que > cela a un intérêt ? Si on veut lancer une fonction sans variable, on a la syntaxe avec le !

Comment sais-tu dans le gabarit qu'une variable ne sera pas appelé, donc, qu'elle restera vide ?
Tu ne peux pas le savoir et si effectivement, tu le sais qu'elle restera vide alors, il n'y a aucun intèrêt de faire une variable...

> Si je peux me permettre au passage, ce serait sympa d'indiquer ce que font les expressions régulières.

Comment ça,  mon code est pas assez documenté ? wink

> Sinon, j'arrive à faire ce que je veux pour le moment avec votre script smile

Cool wink

Offline

 

#5 2010-02-17 19:39:04

Lionel
Membres
Registered: 2010-02-03
Posts: 9

Re: Fonction avec variables

hugo wrote:

Salut,

Tu as juste à créer une fonction afficher comme ceci :

function afficher($val, $param) {
    return (int)$val ? $param : null;
}

Et je l'appele comment dans mon template ?

Offline

 

#6 2010-02-17 21:36:21

hugo
Administrateur
Registered: 2007-04-10
Posts: 807

Re: Fonction avec variables

Déclare la fonction comme ceci dans le code php :

$tpl->registerFunction('afficher', 'afficher');

et appelle la dans le tpl comme ceci :

<select name="choix">
<option value="1" {$choix1|afficher:'selected'}>OUI</option>
<option value="0" {$choix0|afficher:'selected'}>NON</option>
</select>

Offline

 

#7 2010-02-18 14:44:49

Lionel
Membres
Registered: 2010-02-03
Posts: 9

Re: Fonction avec variables

Tu as testé ça ?

J'ai testé hier (je retesterai tout à l'heure) et cela ne fonctionne pas...

Quand je fais {$choix1|afficher:'selected'} ça me lance la fonction : afficher('selected')
Soit c'est un bug, soit c'est moi qui bug !

Offline

 

#8 2010-02-18 15:12:32

hugo
Administrateur
Registered: 2007-04-10
Posts: 807

Re: Fonction avec variables

Oups, il faut utiliser une variable « magique » :

{$choix1|afficher:$0,'selected'}

Ici, $0 vaudra la valeur de $choix

Variables magiques :
- $0 est la variable envoyée au tpl
- $1 est la dernière valeur renvoyée par une fonction

Exemple avec $choix = 'toto'

{$choix1|upper|test:$0,$1}

$0 vaut toto
$1 vaut TOTO

Offline

 

#9 2010-02-18 15:18:02

Lionel
Membres
Registered: 2010-02-03
Posts: 9

Re: Fonction avec variables

Ok, c'est plus clair, merci de l'info

Offline

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson