laravel 7 уничтожить маршрут не работает, он перенаправляет меня на показанный маршрут - PullRequest
0 голосов
/ 06 мая 2020

когда я пытаюсь удалить пользователя, он перенаправляет меня в профиль пользователя (метод показа), он не показывает никаких ошибок, но ведет себя так, как будто я просил метод показа

маршрут

Route::resource('/users', 'UsersController');

ссылка на метод уничтожения

 <a href="{{ route('users.destroy',$user->id) }}">delete</>

метод уничтожения в контроллере

 public function destroy($id)
        {
            $user = User::find($id);
            $user->delete();
            return redirect('/users')->with('success','Utilisateur est supprimé');
        }

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

Ответы [ 2 ]

1 голос
/ 06 мая 2020

С тегом <a> вы отправляете запрос на получение. Таким образом, его можно использовать для получения маршрута, такого как показанный маршрут:

<a href="{{ route('users.show',$user->id) }}">show</>

Для удаления используйте вместо этого <form> с входом с именем _method со значением delete и полем csrf :

<form method="POST" action="{{ route('users.destroy',$user->id) }}">
    {{ csrf_field() }}
    {{ method_field('delete') }}
    <button type="submit">delete</button> 
</form>

Вы можете прочитать больше в документации:
Спуфинг метода формы
Контроллеры ресурсов

0 голосов
/ 06 мая 2020

Метод уничтожения требует метода запроса "удалить" и не может быть достигнут с помощью

<a href="{{ route('users.destroy',$user->id) }}">delete</a>

so use this instead

<form method="POST" action="{{ route('users.destroy',$user->id) }}">
    @csrf
    @method('delete')
    <button type="submit">delete</button> 
</form>
...