【问题标题】:Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException in updateSymfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException在更新
【发布时间】:2018-10-31 10:36:24
【问题描述】:

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

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

【问题讨论】:

  • 这里value={{$user-&gt;name}}应该是value="{{$user-&gt;name}}" 否则只会显示一个字

标签: php laravel


【解决方案1】:

在您的操作属性中,您指定了对控制器的直接调用,而无需转到路由 URI。因此将action属性寻址到这个

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

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

【讨论】:

  • 我是 laravel 新手,能否请您详细解释一下,因为我在发布请求类型时一次又一次地遇到相同的错误,并且让它正常工作。
  • 试试这个&lt;form method="post" action="{{url('/edit/user',$id)}}"&gt;
【解决方案2】:

你的路线应该是 放置而不是发布

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

【讨论】:

  • 我在你写的时候改变了路线,但我有同样的错误。我还能做什么?
猜你喜欢
  • 2020-06-22
  • 2014-11-20
  • 2019-07-01
  • 2018-09-06
  • 2019-01-06
  • 2018-03-25
  • 2019-04-25
  • 2019-07-08
  • 2015-01-07
相关资源
最近更新 更多