Lou2862 Posted January 28, 2013 Share Posted January 28, 2013 Bonjours à tous, Mon idée est de constituer des groupes alphabétiques des fabricants (j'en ai beaucoup) mais c'est tout à fait transposable aux produits. Bien, j'ai en interface une bande avec toutes les lettres de l'alphabet et quand je clique sur une lettre, j'aimerai que seuls les fabricants concernés aparaissent. Donc dans le: {foreach from=$manufacturers item=manufacturer name=manufacturers}, je voudrais placer un simple test {if $manufacturer.name[0] == $lettre} et que la valeur $lettre soit justement définie par le clic (A ou B ou C,....). Donc soit affecter directement une variable smarty, soit activer une fonction php qui s'en charge. Comment faire pour lancer cette fonction? Merci beaucoup pour votre attention! Link to comment Share on other sites More sharing options...
franckm1000 Posted January 28, 2013 Share Posted January 28, 2013 (edited) Tu définis le clic sur chaque lettre sous forme d'un bouton submit par exemple : <input type="submit" value="a" name="a" /> <input type="submit" value="b"name="b" /> ...<input type="submit" value="z" name="z" /> et effectivement tu récupères la valeur dans le controller (fonction process) du style: $tableau=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'); for($i=0;$i<count($tableau);$i++) { if(Tools::iSubmit($tableau[$i])) { $lettre=Tools::getValue($tableau[$i]); $smarty->assign('lettre',$lettre); } Et ensuite dans le TPL tu récupères $lettre. C'est pas forcément le plus élégant (voir javascript) mais ça doit fonctionner. Edited January 28, 2013 by franckm1000 (see edit history) Link to comment Share on other sites More sharing options...
Lou2862 Posted January 29, 2013 Author Share Posted January 29, 2013 (edited) Merci frankm1000 Edited January 29, 2013 by Lou2862 (see edit history) Link to comment Share on other sites More sharing options...
Lou2862 Posted January 29, 2013 Author Share Posted January 29, 2013 Merci frankm1000, décidément tu es sur tous les fronts, J'ai essayé de mettre en oeuvre ta procédure, mais j'ai 2-3 points à éclaircir: -> j'ai mis la partie Code dans le Frontcontroller dans la fonction process () (qui était vide), est-ce bien là qu'il faut le placer? (il n'y pas de fonction process dans le controller Manufacturers) . Par ailleurs dans la ligne if(Tools::iSubmit($tableau[$i]) , j'ai corrigé isubmit par isSubmit , est- ce bon? La ligne <input type="submit" value="b"name="b" /> suffit-elle a stocker l'info dans le controller Tools? ou y a t il un morceau de code à rajouter? J'aurai aimé que le bouton affecte la variable et soit un lien vers manufacturer-list.tpl . Pour pouvoir effectuer la recherche depuis n'importe quelle page. Si j'encadre le <input> par <a> </a>, l'affectation <input> se fera après le début du chargement de la page manufacturer-list.tpl, donc le frontcontroller sera déjà chargé avant que ne soit affecté la bonne valeur à {$lettre}? Autre question, le tableau où est stockée la valeur 'a' ou 'b' ou... est-il renouvelé à chaque fois qu'on clique sur <input>? Si ce n'est pas le cas comment vider la valeur d'avant? Et enfin, j'ai essayé de mettre en place la procédure, je n'obtenais rien, j'ai donc mis un {$lettre|print_r} dans mon TPL (manufacturers-list), et il m'affiche "1" (sans les ""). Donc pas ce que je cherche. Link to comment Share on other sites More sharing options...
franckm1000 Posted January 29, 2013 Share Posted January 29, 2013 (edited) Si tu veux travailler dans le fichier manufacturer.php, la partie PHP doit être changée dans le CONTROLLER associé qui se trouve donc ici: controllers/ManufacturerController.php. Dans ce fichier, tu as bien une fonction process(). C'est ici que tu mets ton code. C'est toujours pareil: un fichier php générique où je travaille (manufacturer, stores, catégorie, product...) => je vais dans le controller faire les traitements. if(Tools::iSubmit($tableau[$i]) , j'ai corrigé isubmit par isSubmit est- ce bon? Oui <input type="submit" value="b"name="b" /> C'est un champs de formulaire, cela sert à envoyer des informations tout simplement. Ici on envoie au clic sur le bouton la valeur b sur le bouton b. Ton formulaire soit ressemblé à ça: <form action="{$request_uri}" name="my_form" method="post"> <input type="submit" value="a"name="a" /> <input type="submit" value="b"name="b" /> <input type="submit" value="c"name="c" /> <input type="submit" value="d"name="d" /> etc......etc....... <input type="submit" value="z"name="z" /> </form> Il doit se situé dans le fichier manufacturer.tpl de ton thème. Pour pouvoir effectuer la recherche depuis n'importe quelle page. Si j'encadre le <input> par <a> </a>, l'affectation <input> se fera après le début du chargement de la page manufacturer-list.tpl, donc le frontcontroller sera déjà chargé avant que ne soit affecté la bonne valeur à {$lettre}? Ca ne veut rien dire. Un input submit est une action et un a en est une autre. Tu ne peux pas faire deux actions en même temps. Quand tu recharges le form tu reviens sur la page manufacturer.php donc tu vas également lister avec manufacturer-list.tpl (manufacturer-list.tpl n'est pas un fichier chargé seul mais dans manufacturer.tpl). Autre question, le tableau où est stockée la valeur 'a' ou 'b' ou... est-il renouvelé à chaque fois qu'on clique sur <input>? Si ce n'est pas le cas comment vider la valeur d'avant? La valeur récupérée d'un formulaire n'existe "qu'un clic" ou "qu'une page" après le clic. C'est ce qu'on appelle un post ou get. si tu cliques à nouveau bien sûr l'ancienne valeur n'existe plus. Edited January 29, 2013 by franckm1000 (see edit history) Link to comment Share on other sites More sharing options...
Lou2862 Posted January 29, 2013 Author Share Posted January 29, 2013 Merci Frankm, ça marche nickel. Oui, c'est vrai que je m'attaque à des trucs trop durs au vu mon niveau. Je suis ingénieur industriel, donc l'informatique n'est vraiment pas mon fort,je vais m'y mettre plus sérieusement en reprenant les bases. Merci encore! Link to comment Share on other sites More sharing options...
franckm1000 Posted January 29, 2013 Share Posted January 29, 2013 Non mais c'est tout à ton honneur de vouloir comprendre ce que tu fais et se faire tout seul. Mais il ne faut pas trop sauter certaines étapes. Faire du traitement PHP sans connaître un minimum sur le passage des variables via les formulaires c'est dur ! Tu devrais te familiariser avec le PHP procédural de base et ensuite te plonger dans la POO Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now