Laravel - метод DELETE не поддерживает удаление маршрута - PullRequest
1 голос
/ 20 апреля 2019

Я новичок в laravel и в настоящее время создаю простую админ-панель.У меня есть сетка, которая показывает пользователей (имя, адрес электронной почты и т. Д.), И проблема у меня, вероятно, глупая, но я не могу понять это.Я создал метод контроллера для удаления пользователя:

public function destroy($id)
    {
        $user = User::find($id);
        $user->delete();

        return redirect('/admin')->with('success', 'User has been deleted');
    }

И определил маршрут так:

Route::post('/admin/delete/{id}', 'AdminController@destroy')    
    ->middleware('is_admin')    
    ->name('admin.destroy');

и для удаления пользователя в сетке, я использовал форму в своем представлении и дажезаголовки настройки:

<td>
<form href="{{ route('admin.destroy', $user->id)}}" method="post">
   @method('DELETE')
   @csrf
   <input class="btn btn-danger" type="submit" value="Delete" />
</form>

И каждый раз, когда я нажимаю кнопку для удаления пользователя, я получаю это:

The DELETE method is not supported for this route. Supported methods: GET, HEAD.

Я просто не могу понять, что яя делаю неправильноЯ попытался изменить тип маршрута на сообщение, но я получаю ту же ошибку.

Ответы [ 2 ]

6 голосов
/ 20 апреля 2019

Ваша форма не содержит action, поэтому она отправит ее на тот же URL-адрес, на котором она включена, то есть только GET / HEAD.

Попробуйте вместо этого:

<form action="{{ route('admin.destroy', $user->id)}}" method="post">
   @method('DELETE')
   @csrf
   <input class="btn btn-danger" type="submit" value="Delete" />
</form>
0 голосов
/ 26 апреля 2019

Вам не нужна опция @method. Вы отметили маршрут как почтовый маршрут в web.php.

<form action="{{ route('admin.destroy', $user->id)}}" method="post">
@csrf
<input class="btn btn-danger" type="submit" value="Delete" />
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...