在LARAVEL中向CRUD添加类别过滤器,但它没有在Selectbox中显示过滤后的类别名称

问题描述 投票:0回答:0

我是 Laravel 新手。我正在研究书籍 CRUD,当我向我的书籍添加类别过滤器时,它已成功过滤,但它没有在选择框中显示应用的过滤器,我已在下面附加了所有必需的文件,如果我正在使用任何错误的方法。根据我的说法,出现的问题是我将类别 ID 传递给 url,然后页面刷新并显示选择框中的第一个选项。

books.blade.php

<select onchange="document.location=this.options[this.selectedIndex].value">
            <option>Pick a choice!</option>
            <option value={{ route('books.index') }}>All</option>
            @foreach ($categories as $category)
                <option value="{{ route('books.index', ['category' => $category->id]) }}">
                     {{ $category->name}}
                </option>
            @endforeach
        </Select>

这是我的刀片文件,一切正常,但它只是没有在选择框中显示所选类别,我已经尝试过应用不同的条件,但没有一个起作用。

BookController.php `

public function index(Request $request)
    {

        if (auth()->user()) {
            if ($request->category == "All") {

                $books = Books::orderBy('id', 'asc')->where('user_id', auth()->user()->id)->get();

            } elseif ($request->category) {

                $books = Books::orderBy('id', 'asc')->where('user_id', auth()->user()->id)->where('category_id', $request->category)->get();

                
            } else {

                $books = Books::orderBy('id', 'asc')->where('user_id', auth()->user()->id)->get();

            }
            return view("books", ['books' => $books])->with('categories', Category::all());
        } else {
            return redirect()->route('login');
        }
        
    }

我还附上了应用了类别过滤器名称 Ethics 的屏幕截图,但 在选择框中显示“选择一个选择!”。如果我可以使用 ajax 解决这个问题,请也编写 ajax 代码。

Category filter applied but not showing in selectbox.

我期望当我将类别过滤器应用于我的书籍时,过滤后的类别名称也会显示在选择框上。

laravel eloquent laravel-blade crud laravel-9
© www.soinside.com 2019 - 2024. All rights reserved.