Besoin d'aide ?

comment afficher les produits avec checkbox(exp:cocher size 's' donc les produits de taille 's' sera afficher)(product filters:brand,size,color,...)comment mettre les checkbox fonctionnel?

Avatar de nachafi
nachafi

salut j'ai besoin d'aide s'il vous plait et merci j'utilise le framework laravel 5.8 comment afficher les produits avec checkbox avec product filters(brand,size,color,...) ? je veux lorsque je cocher la couleur rouge ou taille s ou marque zara (cocher un ou plusieur couleur ,taille , marque,...)les produits reliés à la couleur rouge et/ou taille s sera afficher dans la page et j'ai une faute dans product filters (brand,size,color)par exemple si il y a 3 produits dans la page (exemple lorsque je clique sur category:Men) et les produits ont la meme marque(zara) donc dans brand filter la marque afficher 3 fois( zara,zara,zara) les filters dans sidebar brand zara zara zara et le meme pour les autres donc comment le corriger dans mon code ou qu'est ce que dois je changer et comment mettre les checkbox fonctionnel? et merci beaucoup

mon code categoryController

 public function show($slug)
    {
        $category = $this->categoryRepository->findBySlug($slug);
        $pagination = 15;
       
        
       
        if (request()->category) {
            $products = Product::with('categories')->whereHas('categories', function ($query) {
                $query->whereIn('id', request('category'))->OrderBy('id', 'desc')->paginate($pagination);
             });
            };
            if (request()->brand) {
                $products = Product::where('brand_id', request('brand'))->OrderBy('id', 'desc')->paginate($pagination);
                 
                };
                if (request()->size) {
                    $products = ProductAttribute::where('id','=',1)->where('id', request('size'))->OrderBy('id', 'desc')->paginate($pagination);
                    
                    };

                    if (request()->color) {
                        $products = ProductAttribute::where('id','=',2)->where('id', request('color'))->OrderBy('id', 'desc')->paginate($pagination);
                        
                        };
      
           
        
        $products = Product::OrderBy('name', 'asc')->paginate($pagination);
   
    
       
        return view('site.pages.category', compact('category','products'));
    }
}

category.blade.php: pour brand:

  @foreach($products as $product)
                            <div class="card-body">
                            
                                <form>
                                
                                    <label for="brand_id" class="form-check">
                                    
                                        <input class="form-check-input" id="brand_id" value="{{$product->brand->id}}" type="checkbox">
                                        <span class="form-check-label">
                                      {{ $product->brand->name }}
                                        </span>
                                       
                                    </label>

pour size:

@foreach($products as $product)
                              @foreach($product->attributes as $attributeValue)
                              @if ($attributeValue->attribute_id == 1)
                                <form>
                                    <label for="size" class="form-check">
                                        <input class="form-check-input" id="attribute" value="{{$attributeValue->value}}" type="checkbox">
                                        <span class="form-check-label">
                                      {{ $attributeValue->value }}
                                      
                                        </span>
                                    </label>

pour color:

@foreach($products as $product)
                            @foreach($product->attributes as $attribute)
                            @foreach($product->attributes as $attributeValue)
                           
                            @if ($attribute->id == 2)
                                <form>
                                    <label for="color" class="form-check">
                                        <input class="form-check-input" id="{{$attributeValue->id}}" value="{{$attributeValue->value}}" type="checkbox">
                                        <span class="form-check-label">
                                      {{ $attributeValue->value}}
                                      
                                        </span>
                                    </label>
Posté il y a 7 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Je vois que tu as plusieurs formulaires, il faudrait peut-être tout regrouper en un seul formulaire pour centraliser tous les filtres. Pour les répétitions, il faut peut-être faire des groupBy. Ex : Product::groupBy('name')

Posté il y a 7 mois
Avatar de nachafi
nachafi

merci pour la réponse mais comment faire ça(excuse moi je suis debutante) et qu'est ce que dois je changer ou ajouter? merci

Posté il y a 7 mois

Vous ne pouvez pas répondre à ce sujet.