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

Symfony PHP Discussion :

Récupérer un tableau dans un formulaire


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut Récupérer un tableau dans un formulaire
    Bonjour à vous,


    ORM: Propel

    Objectif: transférer une ancienne commande dans le panier

    Fonctionnement: actuellement, le panier se met à jour normalement, c'est à dire en ajoutant un produit en fonction de son ID.

    Problème: lorsque je veux transmettre une commande dans le panier, il y à donc plusieurs ID de produit à transmettre, or je bloque la dessus.... tout bête hein? (vive symfony... '^^)




    ...\www\apps\frontend\modules\order\templates\showSuccess.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <div class="ligne legend">
     <div class="span-3">Produit</div>
     <div class="span-1">Qt&eacute;</div>
     <div class="span-1">Prix unitaire</div>
     <div class="span-1 outils last">Total</div>
    </div>
    <?php $cpt_id = 0; ?>
    <?php foreach ($products as $product): ?>
    <div class="ligne new">
     <div class="span-3 titreNew">
      <h3><?php echo $product->getProductSelling()->getName() ?></h3>
     </div>
     <div class="span-1"><?php echo $product->getQuantity() ?></div>
     <div class="span-1"><?php echo $product->getPrice() ?> &euro;</div>
     <div class="span-1 outils last">
      <?php echo ($product->getQuantity()*$product->getPrice())?> &euro;
     </div>
     <?php $tb_id[$cpt_id] = $product->getProductSelling()->getId(); ?>
     <?php $cpt_id++; ?>
    </div>
    <?php endforeach ?>
     
    ~~~~~~~~~~~~
     
    // Tentative d'envoi des ID via un tableau
     
    <?php foreach ($tb_id as $i => $value) { ?>
     <?php echo form_tag('shoppingcart/add') ?>
     <?php echo input_hidden_tag('id', $tb_id[$i]) ?>
     <?php echo submit_tag('Ajouter au panier', 'class="bt_action"') ?>
     </form>
    <?php } ?>
    Visuel:




    J'ai mis que un seul bouton "Ajouter au panier" mais actuellement il y en a 3 à cause du foreach que j'ai ajouté (fin du code précédent).



    Le problème est que la page qui récupère les données (le panier -> shoppingcart/add) ne fonctionne qu'avec un identifiant unique, et non un tableau d'identifiants.

    ...\www\apps\frontend\modules\shoppingcart\templates\listSuccess.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <div class="span-4">
     <table>
      <tr>
       <th id="produit">Produit</th>
       <th id="xfr">XFR</th>
       <th id="qte">Qte</th>
       <th id="unit" class="right">Prix unitaire</th>
       <th id="total" class="right">Total</th>
       <th id="total" class="right" style="border-bottom:0px;">&nbsp;</th>
      </tr>
      <?php foreach ($items as $item): ?>
      <?php $object = call_user_func(array($item->getClass().'Peer', 'retrieveByPk'), $item->getId()) ?>
      <tr id="<?php echo 'itemX_'.$item->getId() ?>">
      <td><em><?php echo link_to($object->getName(), 'com_support/view?id='.$object->getId()) ?></em>
      </td>
      <td><?php echo $object->getXfrVisuel() ?></td>
      <td><?php echo input_tag('quantity_'.$item->getId(), $item->getQuantity(), 'size="1"') ?></td>
      <td class="right"><span id="<?php echo 'price_'.$item->getId() ?>"><?php echo format_currency($item->getPrice()) ?></span>€ HT</td>
      <td class="right"><span id="<?php echo 'total_price_'.$item->getId() ?>"><?php echo format_currency($item->getPrice() * $item->getQuantity()) ?></span>€</td>
      <td style="border-bottom:0px;">&nbsp;<a href="#" onClick="ClearInput('<?php echo 'quantity_'.$item->getId() ?>');"><img alt="Supprimer" title="Supprimer" src="/www.extranetvelux.com/www/web/images/icon/cross.png"></a></td>
     </tr>
     <?php endforeach ?>
    [etc...]

    Visuel:



    Dans le cas présent, j'ai cliqué sur le bouton "Ajouter au panier" correspondant à la Carte de visite.


    Donc pour récapituler, j'arrive a envoyer ligne par ligne ma commande dans le panier, en cliquant sur le "Ajouter au panier" de chaque produit, mais je souhaiterais envoyer toutes les lignes de la commande d'un seul coup.

    Dois-je changer le fonctionnement du panier lui-même ou y a-t'il une astuce pour récupérer le tableau d'identifiant et de les traiter un par un.

    Attention, sans $_POST $_GET svp... made in symfony


    J'ai essayé d'être clair (j'ai du mal sa ^^) et concis, donc si jamais vous avez des questions, ou si vous avez besoin d'avoir plus de code pour analyser le problème, n'hésitez pas à me demander.

    Sa me déprime vraiment de buggé sur un problème aussi simple que sa...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Je n'ai pas vraiment compris comment tu ajoutes un élément dans ton panier cela dit ta variable ID doit etre un tableau si tu veux envoyer plusieurs variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php foreach ($tb_id as $i => $value) { ?>
     <?php echo form_tag('shoppingcart/add') ?>
     <?php echo input_hidden_tag('id[]', $tb_id[$i]) ?>
     <?php echo submit_tag('Ajouter au panier', 'class="bt_action"') ?>
     </form>
    <?php } ?>

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Effectivement, c'est la première chose que j'ai faite.

    Sauf que si je fais sa, je tombe sur une page d'erreur symfony étant donné que la page du panier ne doit recevoir qu'un seul identifiant, d'ou mon problème.

    En fait j'aurais besoin de savoir comment récupérer ce tableau id[], dois-je revoir la structure du panier ou est-il possible de géré par une boucle ou autre les ID du tableau mais un par un... enfin je sais je suis pas très clair, mais c'est justement parce que je vois pas comment faire

    En tout cas merci pour l'intérêt porté à mon post

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Sauf que si je fais sa, je tombe sur une page d'erreur symfony étant donné que la page du panier ne doit recevoir qu'un seul identifiant, d'ou mon problème.
    Ton action doit etre capable de gérer un tableau d'ID, il faudra juste que tu l'adaptes un peu.

    En fait j'aurais besoin de savoir comment récupérer ce tableau id[], dois-je revoir la structure du panier ou est-il possible de géré par une boucle ou autre les ID du tableau mais un par un... enfin je sais je suis pas très clair, mais c'est justement parce que je vois pas comment faire
    Une boucle dans ton action devrait faire l'affaire.
    Peux-tu poster ton action?

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Voici la classe associé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class orderActions extends sfActions
    {
      public function executeShow()
      {
        $this->order = OrderPeer::retrieveByPk($this->getRequestParameter('id'));
        $this->forward404Unless($this->order);    
        $this->products = $this->order->getOrderProducts();
      }
     
    [...]
     
    }
    Si je met id[] au lieu de id -> Cette page n'existe pas.

    Après je dois vous avouez que je suis pas très a l'aise dans les class avec tout ses $this et ...Peer

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Huuum, order ID est unique donc c'est normal qu'il n'y est pas de tableau.
    L'action que tu as poster permet d'afficher ta commande. Je pensais plus a l'action qui permet d'ajouter dans ton caddie plusieurs produits c'était bien ta question initiale ?

Discussions similaires

  1. Passé un tableau dans un formulaire et le récupérer
    Par Alexandre T dans le forum Struts 1
    Réponses: 10
    Dernier message: 23/07/2007, 08h30
  2. Réponses: 5
    Dernier message: 20/07/2007, 15h15
  3. insérer un tableau dans un formulaire ACCESS
    Par julie76 dans le forum Access
    Réponses: 2
    Dernier message: 25/10/2005, 18h47
  4. [Tableaux] tableau dans un formulaire
    Par Elo13 dans le forum Langage
    Réponses: 4
    Dernier message: 26/09/2005, 17h28
  5. [ STRUTS ] [ LOGIC:ITERATE ] tableau dans un formulaire
    Par LoulouFifi dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/06/2004, 16h19

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