Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException в обновлении - PullRequest
0 голосов
/ 21 мая 2018

Когда я нажимаю кнопку обновления, я получаю следующую ошибку:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException Нет сообщения

Для обновления у меня есть следующие маршруты:

Route::post('edit/user/{id}','UsersController@update');
Route::get('edit/user/{id}','UsersController@edit');

Как видите, я использую метод post для обновления.

Код моего контроллера:

public function edit($id){
            $user = User::where('id',$id)
            ->first();
            return view('user.edit', compact('user','id'));
        }

        public function update(Request $request, $id){
            $user = new User();
            $data_user = $this->validate($request,$rules_user);
            $data_user['id'] = $id;
            $user->updateUser($data_user);
            return redirect('/users');
        }

Мой код update.blade.php:

   @extends('layouts.app')

@section('content')
<div class="container">
@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div><br />
@endif
    <div class="row">
    <form method="post" action="{{action('UsersController@update', $id)}}" >
        {{csrf_field()}}
        <input name="_method" type="hidden" value="PATCH">
        <div class="form-group">
       <input type="hidden" value="{{csrf_token()}}" name="_token" /> 
            <label for="name">User name:</label>
            <input type="text" class="form-control" name="name" value={{$user->name}} />
        </div>
        <button type="submit" class="btn btn-primary">Update</button>
        </form>
    </div>
</div>
@endsection

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

В вашем атрибуте действия вы указали прямой вызов к контроллеру без перехода к URI маршрута.Поэтому присвойте атрибут действия этому

<form method="post" action="edit/user/{{$id}}" >

. Он пройдет по маршруту и ​​проверит CSRF, затем перейдет к запросу

.
0 голосов
/ 21 мая 2018

Ваш маршрут должен быть поставлен вместо поста

Route::put('edit/user/{id}','UsersController@update’)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...