IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] Problème Imbrication Smarty et Javascript [FAQ]


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut [Smarty] Problème Imbrication Smarty et Javascript
    Bonjour ,

    J'ai un petit soucis avec un bout de code javacript/smarty.
    Voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select name={$m_product_options[m_product_options][m_product_options2].classtext}{$matching[m_product].productid} onchange="if(form.color{$matching[m_product].productid}.selectedIndex != 0) {literal}{{/literal}
    if(form.size{$matching[m_product].productid}.selectedIndex != 0)
    {literal}{ {/literal}
    {assign var="colorIndex" value=form.color{$matching[m_product].productid}.selectedIndex-1}
    {assign var="sizeIndex" value=form.size{$matching[m_product].productid}.selectedIndex-1} 
    form.availP{$matching[m_product].productid}.value = optionsArray{$matching[m_product].productid}[{$colorIndex}][{$sizeIndex}]; {literal}}} {/literal}">
    Donc bien sur, ca ne marche pas , et voila ce que j'ai quand j'affiche la source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <select name=Size41 onchange="if(form.color41.selectedIndex != 0) {if(form.size41.selectedIndex != 0){ 
    .selectedIndex-1}
    .selectedIndex-1} 
    form.availP41.value = optionsArray41[form.color{Array[m_product].productid][form.size{Array[m_product].productid]; }} ">

    Je comprend pas pourquoi il interprète pas mon code correctement...
    Je ne suis pourtant pas en {literal}
    Qu'est ce qui cloche ???

    Merci mille fois pour votre aide !
    Deb

  2. #2
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    Smarty ne considere pas l'imbrication de {, et considere la fin du assign au premier }
    Essayez sans les accolades, ou sans grandes conviction, un hack de cat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {assign var="colorIndex" value="form.color"|cat:$matching[m_product].productid|cat: ".selectedIndex-1"}
    {assign var="sizeIndex" value="form.size"|cat: $matching[m_product].productid|cat:".selectedIndex-1"}

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse.
    Effectivement, je suis bête, j'était déjà en "mode smarty" donc j'avais pas besoin de remettre les accolades.
    Et j'ai remarqué aussi qu'il n'aimait pas trop l'imbrication des [] et des {}.
    Du coup, pour simplifier, j'ai mis mon $matching[m_product].productid dans une variable $pid et du coup, il y a plus de . et de trucs imbriqués, il préfère !!!

    Donc cela fonctionne maintenant.

    Merci encore pour votre aide.
    Deb

  4. #4
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    La concatenation aurait probablement fonctionnée ...

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Bonjour,

    J'ai encore un soucis et cette fois que crois bien qu'effectivement, je vais devoir recourir à la concaténation mais je sais pas comment faire.

    Dans mon onchange j'ai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="form.m_availP.value = optionsArray{$aid}[{$colorIndex}][{$sizeIndex}];"
    Mais il ne l'interprète pas... Il remplace mes {} par leur valeur au lieu de les interpréter. Ex {$aid}=47 il met this.options[this.selectedIndex].value qui est la valeur assignée à âid dans un {assign var...}.
    Par contre un alert('{$aid}'); fonctione !!!

    Comment faire la concaténation dans ce cadre la ?

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    optionsArray|cat:$aid|cat:[|cat:$colorIndex|cat:][|cat:$colorIndex|cat:]);
    Mais ca ne fonctionne pas. Dans votre exemple il y avait des guillemet alors qu'ici il n'y en a pas...
    J'ai donc essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    optionsArray"|cat:$aid|cat:"["|cat:$colorIndex|cat:"]["|cat:$colorIndex|cat:"];
    La il me met le code en rouge, et ca ne marche pas non plus...

    Je suis un peu perdue avec ce javascript et ce smarty...

    Merci de votre aide
    Deb

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut
    Ok, y'a vraiment des choses que je comprend pas !

    alert({$aid}+{$colorIndex});
    me donme 471, ce qui est OK !

    maintenant

    alert(optionsArray+{$aid}+[+{$colorIndex}+][+{$colorIndex}+]);
    me donne la même chose que
    alert(optionsArray{$aid}[{$colorIndex}][{$colorIndex}]);
    C'est à dire ne traduit pas les {$...} : alert(optionsArray+this.options[this.selectedIndex].value+[+form.m_Color.selectedIndex-1+][+form.m_Color.selectedIndex-1+]);
    ou alert(optionsArraythis.options[this.selectedIndex].value[form.m_Color.selectedIndex-1][form.m_Color.selectedIndex-1]);

    Pourquoi ????

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/06/2008, 13h56
  2. Très gros problème quand je désactive javascript
    Par ph_anrys dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/02/2008, 17h12
  3. [XHTML] Problème de validation avec javascript
    Par HwRZxLc4 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 16/12/2007, 00h13
  4. [Smarty] Smarty et Javascript
    Par debie1108 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 03/05/2007, 02h39
  5. problème avec une fonction javaScript
    Par volthur dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/05/2006, 18h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo