select 在 laravel 8 blade 中输入 select 的旧值

select the old value with select input in laravel 8 blade

如何在 Laravel 8 blade 中编辑旧值 select 并在编辑表单中输入 select ....我试过这种方式但没有工作:

  <select name="category" id="category" class=" @error('category') border-red-500 @enderror rounded-md shadow-sm mt-1 block w-full">
                        @foreach($categories as $category)
                            <option value="{{$category->id}}" {{ old('category', $category->id) ? 'selected' : '' }}>{{ $category->name }}</option>
                        @endforeach
                    </select>

这就是控制器内部的内容:

public function edit(Product $product)
    {
       
        $categories = Category::all();
        return view('dashboard.products.edit', compact('categories', 'product'));
    }

我认为你的产品应该有一个 category_id 所以在循环中你还需要检查它 $product->category_id === $category->id.

@foreach($categories as $category)
    <option value="{{$category->id}}" {{ old('category', $category->id) || $product->category_id === $category->id ? 'selected' : '' }}>{{ $category->name }}</option>
@endforeach

基于 edit() 中的代码,方法 old() 将不起作用。因为没有旧值,因为你的代码只是 return a view.If 你需要使用那个函数然后你需要使用输入重定向 return redirect()->back()->withInput();