Форма отправки, которая позволяет администратору изменять роль пользователя или персонала, ошибка показывает Missing required parameter for [Route: updateRolePermission] [URI: admin/edit-role-permission/{id}] [Missing parameter: id] Я борюсь с этой проблемой много часов, каждый может помочь, спасибо !!!!!

<form action="{{ route('updateRolePermission'), ['id' =>$user->id] }}" method="POST">
    @csrf
    <select name="roles">
    <option value="user">User</option>
    <option value="staff">Staff</option>
    </select>
    <input type="submit">
</form>
Route::group(['prefix'=>'admin', 'middleware'=>['isAdmin','auth']], function(){
    Route::get('dashboard', [AdminController::class, 'index'])->name('admin.dashboard');
    Route::get('role-permission', [AdminController::class, 'rolePermission'])->name('admin.rolePermission');

    //it doesnt work!!!!
    Route::get('edit-role-permission/{id}', [AdminController::class, 'editRolePermission'])->name('updateRolePermission');
});
    function editRolePermission($id)
    {
        $row = DB::table('users')
                ->where('id',$id)
                ->limit(1)
                ->update(array('role' => 'fdas'));

        return redirect()->back();
    }
1
陳宇亘 27 Ноя 2021 в 14:02
1
Ваш маршрут - это метод GET, а ваша форма - метод POST.
 – 
Phil
27 Ноя 2021 в 14:07
Route::get(... должно быть Route::post(...
 – 
sta
27 Ноя 2021 в 14:09
Спасибо !!, новые проблемы, теперь я могу отправить идентификатор, но роль.
 – 
陳宇亘
27 Ноя 2021 в 14:16
Также есть опечатка: route('updateRolePermission'), ['id' =>$user->id] должно быть route('updateRolePermission', ['id' =>$user->id]). Голосование, чтобы закрыть это как опечатку (как GET / POST, так и опечатку маршрута)
 – 
M. Eriksson
27 Ноя 2021 в 14:19
1
Не меняйте вопрос после его решения. Если у вас есть другие проблемы, задайте новый вопрос. Откатил ваши обновления. Если вы его измените, ни один из предыдущих комментариев / ответов не будет иметь смысла для будущих посетителей. И если вам помог конкретный ответ, примите этот ответ.
 – 
M. Eriksson
27 Ноя 2021 в 14:24

2 ответа

Лучший ответ

Измените эту строку:

action="{{ route('updateRolePermission'), ['id' =>$user->id] }}"

К этому:

action="{{ route('updateRolePermission', $user->id) }}"
0
Rouhollah Mazarei 27 Ноя 2021 в 14:10
Ты пробовал это? Я работаю с этим.
 – 
Rouhollah Mazarei
27 Ноя 2021 в 14:15
Ах, ... опечатка. Они закрывают маршрут перед ссорой. Это следует указать в комментарии, а затем проголосовать за закрытие как опечатку. Так что проблема не в массиве, а в опечатке. Вот почему важно добавить объяснение к ответу, чтобы указать, в чем была проблема, иначе легко пропустить.
 – 
M. Eriksson
27 Ноя 2021 в 14:17
В документации используется пример route('profile', ['id' => 1]). вы можете использовать синтаксис в моем ответе или поставить , ['id' =>$user->id] ВНУТРИ круглых скобок.
 – 
Rouhollah Mazarei
27 Ноя 2021 в 14:19
Я заметил, пожалуйста, прочтите мой предыдущий комментарий.
 – 
M. Eriksson
27 Ноя 2021 в 14:20
1
Я опубликовал свой комментарий до того, как прочитать ваш, в любом случае это нормально.
 – 
Rouhollah Mazarei
27 Ноя 2021 в 14:22

Сначала ваш маршрут - это метод GET, а ваша форма - это метод POST.

Что касается $id, вы можете получить его в своем контроллере следующим образом:

$id = \Route::current()->parameter('id');
0
Phil 27 Ноя 2021 в 14:10