Condition {if} dans un template smarty - PHP - Programmation
Marsh Posté le 16-06-2010 à 19:07:10
oui, tu fais ta boucle dans le code php, et tu mets un attribut explicite à tester dans ton template
Le principe du template est de rester simple, fait un maximum de contrôles et de test dans le code php
Marsh Posté le 16-06-2010 à 19:49:07
Azax a écrit : Bonjour à vous,
|
http://www.smarty.net/manual/en/la [...] uncate.php
Marsh Posté le 17-06-2010 à 10:51:34
Skeye je n'ai pas compris pourquoi tu m'a redirigé vers la fonction de troncation.
Par contre PunkRod pourrait tu être plus claire s'il te plaît ( avec un exemple ). Je suis vraiment débutant en matière de framework et donc en utilisation de template.
Que dois-je écrire exactement dans le php? le contrôle de la chaîne de caractère ?
Comment je fais appel a ce contrôle une fois dans le template?
Désolé si mes questions vous paraissent dérisoire.
Marsh Posté le 17-06-2010 à 11:35:11
Azax a écrit : Skeye je n'ai pas compris pourquoi tu m'a redirigé vers la fonction de troncation. Par contre PunkRod pourrait tu être plus claire s'il te plaît ( avec un exemple ). Je suis vraiment débutant en matière de framework et donc en utilisation de template. Que dois-je écrire exactement dans le php? le contrôle de la chaîne de caractère ? Désolé si mes questions vous paraissant dérisoire. |
ça fait longtemps que j'ai pas touché à smarty, mais ça ne gère pas les expressions régulières dans un simple test d'égalité, non?
Je proposais donc la troncature pour tester la valeur du 1er caractère de ta variable, tout simplement.
Mais après un coup d'oeil à la doc, je vois qu'on peu carrément faire appel à des fonctions php dans un if, donc tu dois pouvoir tout simplement faire un truc de ce genre (pas testé):
Code :
|
Marsh Posté le 17-06-2010 à 13:59:30
attention tout de même, même si cette solution reste propre
Code :
|
dans le cas où
Code :
|
$ppo->test sera égale à 0
dans le cas où
Code :
|
$ppo->test sera égale à 7
Marsh Posté le 17-06-2010 à 14:04:47
Ba je veux juste que si $ppo->test trouve un chiffre qu'il applique la classe qui lui est renseigné.
Or avec ca
Code :
|
Rien ne se passe, il n'applique ni la class 'ligne1' ni la class 'ligne2'.
Donc je me demande même si il rentre dans mon if ?
Marsh Posté le 17-06-2010 à 14:31:38
mais il va passer toujours dans le else non ?
et faire plutôt
Code :
|
Marsh Posté le 17-06-2010 à 14:40:56
Avec ca, il ne passe pas dans le esle. Par contre il me colorie toutes mes lignes avec la class 'ligne1'.
Soit il me colorie toutes mes lignes avec la class ligne1 soit avec ligne 2 mais il n'arrive pas a différencier les lignes de mon tableau.
Marsh Posté le 17-06-2010 à 14:46:06
Ok, la conversion en int te donne toujours 0 pour les autres lignes, je suis con. Si tu mets un > au lieu du >= tu devrais avoir toutes les lignes qui commencent par [1-9]
Bon, et ça ,
Code :
|
Marsh Posté le 17-06-2010 à 14:51:50
Avec cela j'ai le droit à un message d'erreur
Warning: ord() expects parameter 1 to be string, array given in /opt/lampp/htdocs/m-phd/temp/cache/php/templates/%%97^97D^97DA3A0C%%listemodule.tpl.php on line 44
class='ligne2' >
Le truck c'est que c'est seulement le 1er caractère de ma chaîne que je dois contrôler.
Mes chaînes de caractère correspondent a cela :
1 - COMMUNICATION ET MANAGEMENT
SAVOIR COMMUNIQUER EN SITUATION PROFESSIONNELLE
SAVOIR CONDUIRE DES REUNIONS DE TRAVAIL
PILOTAGE D'EQUIPE
GERER LES CONFLITS
et donc je veux que celle avec un chiffre devant soit coloré d'une certaine manière
Marsh Posté le 17-06-2010 à 14:56:26
Bizarre, ord() est censé prendre le premier caractère de la chaine passée, justement...
Remplace ord($ppo->test) par ord(substr($ppo->test, 0, 1))...
Marsh Posté le 17-06-2010 à 15:49:37
Escuse du temps de latence j'étais en réunion avec mon maître de stage.
Même message d'erreur avec ton autre technique.
L'erreur pourrait-elle venir du tableau de valeur que je récupère?
Marsh Posté le 17-06-2010 à 16:05:59
Oui! J'avais oublié de relire ton code au début, il est évident qu'il faut remplacer $ppo->test par $ppo->test[id] dans tous les exemples plus haut...
Marsh Posté le 17-06-2010 à 16:25:50
Cela fonctionne !
Merci énormément skeye !
Si je rencontre d'autre problème de ce genre je re-posterais sur ce topic donc ne t'éloigne pas trop )
Merci encore.
Marsh Posté le 21-06-2010 à 15:14:19
je re -up le sujet en espérant que skeye soit toujours dans le coin
Toujours un problème de smarty )
Code :
|
Le problème est que mon lien javascript ne se lance pas parce que le [id] en rouge ne récupère rien. Si je rentre en dure un chiffre cela fonctionne mais ca ne me sert a rien.
Je pensais avoir trouvé une solution en remplaçant mon second foreach par un section comme ceci
Code :
|
Comme ceci mon lien java script fonctionne, le problème étant que pour chaque thématique, le lien javascript re-commence a partir de la première uv. Exemple pour comprendre
Them 1
uv 1 // javascript de l'uv 1
uv2 // javascript de l'uv2
uv3 // javascript de l'uv3
Them 2
uv4 // javascript de l'uv 1
uv5 // javascript de l'uv 2
them 3
uv6 //javascript de l'uv 1
etc..
Si quelqu'un peut m'expliquer pourquoi ?
Merci.
Marsh Posté le 21-06-2010 à 16:23:05
Problème résolu grâce a mes super collègues informaticiens.
il fallait rajouter un key dans mon 2eme foreach "key=id"
ainsi que remplacer mon $ppo->donnee[id] par $id
et le tour est joué !
Marsh Posté le 16-06-2010 à 10:14:48
Bonjour à vous,
J'ai en effet un problème avec une condition {if} dans mon template.
En effet j'essaie de colorier les lignes de mon tableau quand celle-ci commence par un chiffre [0_9]
Avec ce script rien ne se colorie alors qu'avec celui-ci:
Seulement ma première ligne se colorie.
Je n'ai pas trouvé de fonction sous smarty permettant de contrôler la première valeur d'une chaîne de caractère.
Quelqu'un aurait-il la solution pour contrôler le premier caractère d'une chaîne?
Merci d'avance.
Message édité par Azax le 16-06-2010 à 11:35:32