首页 > 解决方案 > 从复选框 laravel 更改用户状态

问题描述

我想用复选框更改用户状态。如果复选框被标记,状态应该是一。现在我在控制器中的更改状态功能根本没有改变任何东西。我如何确保他将复选框视为一个值,并且当值为 1 时复选框标记会发生变化。这是我到目前为止所拥有的:

在我看来:

<form action="{{ route('users.change_status', $user) }}" class="form" method="post">
                                {{ csrf_field() }}
                                @method('PATCH')
                                <label>body</label>
                                <input type="checkbox" class="form-control" name="body" value="{{$user->status}}">
                                <div class="form-group">
                                    <button type="submit" class="button is-link is-outlined">Update</button>
                                </div>
                            </form>

在我的用户控制器中:

public function index()
    {
        $users = User::get();
        return view('users',compact('users'));
    }


    public function change_status(Request $request, User $user)
    {
        dd($user);

        // Validate posted form data
        $validated = $request->validate([
            'status' => 'required',
        ]);

        if (!$validated) { return redirect()->back();}
        $user->update($request->all());

        return redirect()->back();

    }

还有我在 web.php 中的路线:

Route::get('/users', [UserController::class, 'index'])->name('users.index');
Route::patch('/change_status', [UserController::class, 'change_status'])->name('users.change_status');

标签: phplaravel

解决方案


使用路由模型绑定

Route::patch('/change_status/{user}', [UserController::class, 'change_status'])->name('users.change_status');

推荐阅读