Я пытаюсь обновить входные данные, используя html-форму в laravel:
<form action = "{!! route('users.update',['id' => $users->id]) !!}" method = "post">
<div class = "form-group row">
<label for = "colFormLabelLg" class = "col-sm-3 col-form-label col-form-label-lg">customer_name</label>
<div class = "col-sm-10">
<input value = "{{$name}}" class = "form-control form-control-lg" placeholder = "col-form-label-lg">
</div>
<button type = "submit" class = "btn btn-primary btn-lg" > Edit</button>
</form>
Все в контроллере работает отлично, однако на странице просмотра я получил эту ошибку:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException No message
Что я делаю неправильно?
Нужно добавить csrf_token{!! csrf_field() !!}
Я добавил это, но все равно та же ошибка @Exterminator
Ваш файл маршрута, пожалуйста
Route :: resource ('пользователи', 'пользовательский контроллер'); Я использую ресурс маршрута @Exterminator
Я изменил метод установки и исправления, но он не обновляется и показывает пустую страницу
вам не нужно менять метод, который вам нужен, чтобы подделать его, как я показал в ответе ниже






Пожалуйста, исправьте свой маршрут как POST, например:
Route::post('update/{id}', 'YourController@update')->name('users.update');
Я использую ресурс маршрута, я добавил маршрут, который вы мне дали, он не показывает ошибки, но не обновляет @Saurabh Dhariwal
@hala: Я просто привожу вам пример.
@hala: Пожалуйста, проверьте свой маршрут с помощью php artisan route:list
@hala: Добавьте <input name = "_method" type = "hidden" value = "PATCH"> в файл лезвия и проверьте
@hala: пожалуйста, проверьте, что ваш маршрут POST или PATCH в файле маршрута, или проверьте php artisan route:list
это POST это строка обновления в списке маршрутов POST | обновление / {id} | users.update | Приложение \ Http \ Controllers \ userscontroller @ update | сеть
@hala: Измените метод формы в файле лезвия, например <form action = "{{ route('users.update',['id' => $users->id]) }}" method = "post">
Вам нужно подделать метод, который вы используете для публикации данных. Поскольку HTML-формы не могут выполнять запросы PUT, PATCH, or DELETE, вам нужно будет добавить скрытое поле _method для имитации этих HTTP-глаголов. Директива @method Blade может создать это поле для вас следующим образом:
<form action = "/foo/bar" method = "POST">
@method('PUT') //add this to your form
</form>
или
<form action = "/foo/bar" method = "POST">
{{ method_field('patch')}} //add this to your form
</form>
<form action = "{{route ('users.update', ['id' => $ users-> id])}}" method = "POST"> @method ('PUT') // добавьте это в свой form <input name = "_ method" type = "hidden" value = "PATCH"> csrf_token {!! csrf_field () !!} <div class = "form-group row"> <label for = "colFormLabelLg" class = "col-sm-3 col-form-label col-form-label-lg"> имя_клиента </ label > <div class = "col-sm-10"> <input value = "{{$ name}}" class = "form-control form-control-lg" placeholder = "col-form-label-lg"> < / div>
Вам нужно поместить @csrf и @method('PATCH') в представление формы.
У меня такая же проблема, и она сработала после добавления нескольких строк в мой код:
$users->id вместо того, чтобы делать это как массив ['id' => $users->id]csrf и подделайте метод, добавив @method('PUT')Ваш код должен выглядеть так:
<form action = "{!! route('users.update', $users->id) !!}" method = "post">
@csrf
<!--Some fields-->
@method('PUT')
</form>
Покажите нам свой файл маршрута