【问题标题】:Filtration data by category in Laravel在 Laravel 中按类别过滤数据
【发布时间】:2021-09-20 07:28:13
【问题描述】:

索引控制器

public function index()
    {
        $blogs = Blog::all();
        $categories = Category:all();

        return view('blog', compact('blogs', 'categories'));
    }

我们在博客页面上有类似下面的代码。首先我们获取所有可用类别,然后是所有博客列表

@extends('layouts.app')

@section('content')
<div class="container">
<div class="category-filter" id="filter">
     <div class="category-filter_item active">All</div>
     @foreach($categories as $category)
     <div class="category-filter_item">{{ $category->title }}</div>
     @endforeach
</div>

@foreach($blogs as $blog)
    <div class="blog-list {{ $blog->category_id}}">
        <h2 class="blog_title">{{ $blog->title }}</h2>
    </div>
@endforeach
</div>
@endsection

您能否建议一个过滤功能,在选择特定类别时,将按 ID 拉出该类别中的所有博客?

JavaScript

document.querySelectorAll('.category-filter_item').forEach(el => {
  el.addEventListener('click', () => {
    document
      .querySelector('.category-filter_item.active')
      .classList.remove('active');
    el.classList.add('active');

【问题讨论】:

    标签: javascript php laravel


    【解决方案1】:

    您可以在您的情况下使用 ajax,方法是向后端发送 ajax 请求并处理数据,然后返回响应,这是控制器中的函数示例。

    public function ajaxResponse(Request $request){
            if ($request->ajax()) {
                $cat_id = $request->input('cat');
    
                $blogs = Blog::query();
                if ($cat_id != null) {
                    $blogs->whereHas("categories", function ($query) use ($cat_id) {
                        $query->whereIn('category_id', explode(',', $cat_id));
                    })->get();
                }
    
                $blogs = $blogs->get();
    
                $blog = view('articles.ajaxblogs', ['blogs' => $blogs])->render();
            }
            return response()->json(['blog' => $blog]);
        }
    

    确保在请求中包含类别 ID。

    【讨论】:

      猜你喜欢
      • 2021-11-15
      • 2021-11-15
      • 2021-12-23
      • 2021-10-26
      • 2019-03-25
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 2017-06-27
      相关资源
      最近更新 更多