簡體   English   中英

Laravel 8、如何將表單值傳遞給路由

[英]Laravel 8, how to pass form values to Route

我正在做角色和權限,管理員可以將user更改為staff的操作。 我可以將id發送到editRolePermission function,但是角色值。

    function editRolePermission($id, "role value here")
    {

        $row = DB::table('users')
                ->where('id',$id)
                ->limit(1)
                ->update(array('role' => ''));
        return redirect()->back();
    }
<form action="{{ route('updateRolePermission', $user->id) }}" method="POST">

    @method('PATCH')
    @csrf

    <select name="roles">
    <option name ="user" value="user">User</option>
    <option name= "staff" value="staff">Staff</option>
    </select>
    <input type="submit" onchange="this.form.submit()">
</form>
Route::patch('edit-role-permission/{id}', [AdminController::class, 'editRolePermission'])->name('updateRolePermission');

以下應該做你想要的。 這是路線 - 請注意,我已將{id}替換為{user} - 這是我們需要為其編輯角色的用戶 ID:

Route::post("/edit-role-permission/{user}", [AdminController::class, "editRolePermission"]);

如何在表單中實現路由:

@if(session()->has("message"))
    {{ session("message") }}
@endif

<form action="/edit-role-permission/{{ $user->id }}" method="POST">
    @csrf

    <select name="roles">
        <!-- ... options ... -->
    </select>

    <!-- submit button -->
</form>

感謝 Laravel 魔術,將用戶 ID 作為第二個參數傳遞允許我們訪問用戶 model,因此我們可以輕松更新用戶,而代碼更少。 我們可以使用請求來獲取任何發布的值,在這種情況下$request->roles指的是名為roles的輸入:

public function editRolePermission(Request $request, \App\Models\User $user)
{
    $user->update(["role" => $request->roles]);
    $user->save();

    return redirect()->back()->with("message", "User role updated successfully");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM