Autour de Laravel

Envoi d'une variable dans un composant livewire

Avatar de RyanKeli
RyanKeli

Bonjour à tous. J'ai créé un système de gestion de panier avec le dépôt de hardevine LaravelShoppingCart. Maintenant, ce que j'aimerais faire est de pouvoir modifier la quantité de chaque produit et aussi supprimer un produit du panier avec avec livewire. Le problème est que je ne sais pas comment envoyer le CartItem à mes composants livewire (modification de la quantité du produit et celui pour la suppression du produit présent dans le panier) pour écrire la logique de modification et de suppression.

Composant livewire pour la modification (vue)

<div class="input-group mb-3" style="max-width: 120px;">
  <div class="input-group-prepend">
    <button class="btn btn-outline-primary" wire:click="decrement()" type="button">−</button>
  </div>
  <input type="text" name="qty" class="form-control text-center" value="{{$count}}" placeholder="">
  <div class="input-group-append">
    <button class="btn btn-outline-primary" wire:click="increment()" type="button">+</button>
  </div>
</div>

Composant livewire pour la suppression (vue)

<form action="{{route('panier.destroy', $product->rowId)}}" method="POST">
    @csrf
    @method('DELETE')
    <button type="submit" class="btn btn-primary height-auto btn-sm">X</button>
  </form>

Composant livewire

<?php
namespace App\Http\Livewire;

use Livewire\Component;
use Gloudemans\Shoppingcart\Facades\Cart;

class Counter extends Component
{
  public $count = 1;

  public $item;
  
  public function mount($item)
  {
       $this->item = $item;
  }

  public function render()
  {
      return view('livewire.counter');
  }

  public function increment($rowId)
  {
      $product = Cart::get($rowId);
      // $qty = $product->qty + 1;
      // Cart::update($rowId, $qty);
      $this->count++;
  }

  public function decrement($rowId)
  {
      $product = Cart::get($rowId);
      // $qty = $product->qty + 1;
      // Cart::update($rowId, $qty);
      if ($this->count > 1) {
        $this->count--;
      }
  }
}

J'ai essayé de récupérer avec la méthode mount pour ça a généré une erreur. Merci de bien vouloir m'aider.

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.