首页 文章

更新中的Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

提问于
浏览
0

当我点击更新按钮时,我得到下一个错误:

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>
@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

    在您的操作属性中,您指定了对控制器的直接调用,而无需转到路径URI . 因此,请将action属性解决此问题

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

    它将通过该路由并验证CSRF然后继续执行该请求

  • 1

    你的路线应该是Put而不是post

    Route::put('edit/user/{id}','UsersController@update’)
    

相关问题