我是 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 代码。
我期望当我将类别过滤器应用于我的书籍时,过滤后的类别名称也会显示在选择框上。