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

  [Opened] Autoriser les appels de méthodes statiques dans les templates ?

Posted by galves on 07/06/2006 10:08

Je ne sais pas si c'est souhaitable, mais c'est faisable, en ajoutant dans le fichier jTplcompiler.class.php, ligne 25:

 private  $_op = array(T_BOOLEAN_AND, T_BOOLEAN_OR, T_EMPTY, T_INC,
 T_ISSET, T_IS_EQUAL, T_IS_GREATER_OR_EQUAL, T_IS_IDENTICAL, 
 T_IS_NOT_EQUAL, T_IS_NOT_IDENTICAL, T_IS_SMALLER_OR_EQUAL, 
 T_LOGICAL_AND,T_LOGICAL_OR, T_LOGICAL_XOR, T_SR, T_SL, T_DOUBLE_ARROW
 + , T_DOUBLE_COLON
 );

et ligne 164 dans la méthode _parseFinal():

 case 'foreach':
    $res = 'foreach('.$this->_parseFinal($args,array(T_AS,  
    T_DOUBLE_ARROW,T_STRING, T_OBJECT_OPERATOR
 +  ,T_DOUBLE_COLON
    ), array(';','!')).'):';
    array_push($this->_blockStack,'foreach');
 break;

C'est en tout cas bien pratique pour faire un appel jAcl::check() ou jAuth::isConnected() directement dans le template.

  [Opened] Re: Autoriser les appels de méthodes statiques dans les templates ?

Reply #1 Posted by laurentj on 07/06/2006 11:27

depuis quand on appelle des fonctions dans le vrai foreach de php ? Je ne comprend pas ce que tu veux faire exactement.

  [Opened] Re: Autoriser les appels de méthodes statiques dans les templates ?

Reply #2 Posted by laurentj on 07/06/2006 11:36

À noter qu'il est prévu des plugins du genre

 {ifacl "droit",valeur}
  ...
 {/ifacl}

 {ifconnected}
 ...
 {/ifconnected}

Mais il faut d'abord que je fasse évoluer jTpl pour avoir des plugins de type block...

  [Opened] Re: Autoriser les appels de méthodes statiques dans les templates ?

Reply #3 Posted by galves on 07/07/2006 16:07

depuis toujours ;o) une fonction renvoyant un tableau au hasard, du type

 {foreach maClasse::maMéthodeQuiRenvoieUnTableau() as $truc }

De plus, ça permet qques petites folies du type

 {maClasseQuiEcritDuHTML::maMethodeStatique($form, 'monChamp', 'monLabel')}

il suffit de mettre maClasseQuiEcritDuHTML dans lib/jelix/utils (ok, c'est un peu sale, mais ça me fait du code beaucoup plus propre dans les templates, je factorise ainsi l'écriture de HTML répétitif dans une seule fonction statique)

  [Opened] Re: Autoriser les appels de méthodes statiques dans les templates ?

Reply #4 Posted by laurentj on 07/09/2006 18:40

 {foreach maClasse::maMéthodeQuiRenvoieUnTableau() as $truc }

Mouai, un peu crade ça. Ton template n'est pas censé appelé une classe. C'est l'objet qui appelle ton template qui appelle les classes qu'il faut pour récupérer les données, et ensuite les passer aux templates.

Séparation en couche oblige.

Donc, pas ce genre de truc de prévu...

 {maClasseQuiEcritDuHTML::maMethodeStatique($form, 'monChamp', 'monLabel')}

Pour ça : fait un plugin de template :-)

Sinon, à noter que ça y est, dans le dépot subversion, j'ai fais les plugins {ifacl}...{/ifacl}, {ifuserconnected}..{/ifuserconnected}.. {ifnoacl}...{/ifnoacl}, {ifusernotconnected}..{/ifusernotconnected}..

:-)

 
Page
  1. Autoriser les appels de méthodes statiques dans les templates ?