该路由不支持GET方法。支持的方法:laravel中的PUT。

时间:2019-12-25 23:46:55

标签: php laravel

这是我使用PUT方法的表单,但它给了我一个错误

  

此路由不支持GET方法。支持的方法:PUT。

<form action="{{ route('accounts.update', $user->id) }}" method="put" role="form" name="_method">
     @csrf
     @method('PUT')

     <div class="form-group row">
        <label for="balance" class="col-md-4 col-form-label text-md-right">{{ __('Enter Client\'s Balance  :') }}</label>
        <div class="col-md-6">
          <input id="balance" type="text" class="form-control @error('balance') is-invalid @enderror" name="balance" value=""  autocomplete="balance" autofocus>
        </div>
     </div>
     <div class="form-group row">
        <label for="amount" class="col-md-4 col-form-label text-md-right">{{ __('Enter Client\'s Amount:') }}</label>
        <div class="col-md-6">
          <input id="amount" type="text" class="form-control @error('amt') is-invalid @enderror" name="amt" value="" required autocomplete="amt" autofocus>
        </div>
     </div>
     <!-- /.card-body -->

     <div class="card-footer text-center">
        <button type="submit" class="btn btn-primary">Update Account</button>
     </div>
</form>

这是路由文件

Route::get('/accounts/{id}/edit', 'AccountsController@edit')->name('accounts.edit');
Route::put('/accounts/{id}', 'AccountsController@update')->name('accounts.update');

3 个答案:

答案 0 :(得分:3)

T

答案 1 :(得分:0)

我认为您应该从 form 标记中删除 name =“ _ method” 属性,因为laravel为隐藏的输入保留了该属性

示例:

{
  test: /\.css$/,
  oneOf: [
    // this matches `<style module>`
    {
      resourceQuery: /module/,
      use: [
        'vue-style-loader',
        {
          loader: 'css-loader',
          options: {
            modules: true,
            localIdentName: '[local]_[hash:base64:5]'
          }
        }
      ]
    },
    // this matches plain `<style>` or `<style scoped>`
    {
      use: [
        'vue-style-loader',
        'css-loader'
      ]
    }
  ]
}

请参阅:https://laravel.com/docs/5.7/routing#form-method-spoofing

答案 2 :(得分:0)

HTML表单不支持PUT / PATCH方法。因此,当您想在Laravel中使用HTML表单执行PUT / PATCH操作时,必须添加@method('put')并将表单方法设置为method="post"。因此,您可以将代码更改为:

<form action="{{ route('accounts.update', $user->id) }}" method="post">
   @csrf
   @method('PUT')
   ....
</form>