[RESOLU] (twig) Masquer un formulaire après validation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] (twig) Masquer un formulaire après validation

Re: (twig) Masquer un formulaire après validation

par Mithrandyll » 15 juin 2020, 10:26

Up ...

(twig) Masquer un formulaire après validation

par Mithrandyll » 12 juin 2020, 15:36

Bonjour à tous,

Je bloque actuellement sur un problème, je n'arrive pas à trouver la solution. J'ai une page de produit faite avec le système de cart que l'on peut trouver sur Bootstrap.
J'arrive à ajouter un produit au panier, de ce côté la, tout est fonctionnel. J'aimerai désormais que quand le produit est ajouté, la cart soit désactivée afin qu'on ne puisse plus ajouter le même produit dans le panier. Je suis bloqué là-dessus depuis hier matin, c'est vous dire si je commence à sérieusement déprimer ...

Voici le code que j'ai produit jusqu'à maintenant :

Le formulaire :
 {% for row in products|batch(4) %}
            <div class="card-deck">
                {% for product in row %}
                <div class="card mb-4">
                    <img src="{{ product.image_file }}" class="card-img-top" style="max-height: 250px;" alt=""/>
                    <div class="card-body">
                        <h5 class="card-title">{{ product.name }}</h5>
                        <p class="card-text">
                            {{ product.description }}
                        </p>
                    </div>
                    <div class="card-footer text-center">
                        {{ form.start({action:generate('technicien_carts_add')}) }}
                            {{ tag.input({type:'hidden', name:'product_id', value: product.id}) }}
                            {{ tag.input({type:'number', name:'quantity', class:'d-inline w-50'}) }}
                            <button type="submit" name="remove" class="btn btn-primary"><i class="fas fa-cart-plus"></i></button>
                        {{ form.end() }}

                    </div>
                </div>
                {% endfor %}
Le traitement côté controller de l'ajout dans le panier (sous forme de tableau serializé :
public function addItem()
    {

        $cartsTable = new CartsTable();
        $carts = new Carts();

        $cartUser = $this->getCartUser(Auth::getUserId());

        $item = [
            $_POST['product_id']."a" => [
                "quantity" => $_POST['quantity']
            ]
        ];

        if (array_key_exists($_POST['product_id']."a", $cartUser)){
            unset($cartUser[$_POST['product_id']."a"]);
        }

        $items = array_merge($cartUser, $item);

        $carts
            ->setUsers_Id(Auth::getUserId())
            ->setItems(serialize($items));

        if(isset($cartUser) and empty($cartUser)){
            $cartsTable->insert($carts);

        } else {
            $cartsTable->updateCart($carts);
        }

        $this->flash->success('Le produit à bien été ajouté au panier.', $this->router->url("technicien_order"));

    }
Je vous remercie d'avance pour votre aide, j'en ai bien besoin ...