【问题标题】:The PUT method is not supported for this route. Supported methods: POST此路由不支持 PUT 方法。支持的方法:POST
【发布时间】:2020-04-13 06:05:28
【问题描述】:

单击edit.blade.php 中的编辑按钮时出现问题。在更新功能中,此路由不支持 PUT 方法。支持的方法:POST。

web.php

<?php

Route::get('/', function () {
    return view('welcome');
});
Route::get('phones','PhonesController@index');
Route::post('store','PhonesController@store');
Route::delete('destroy/{id}','PhonesController@destroy');
Route::put('edit/{id}', 'PhonesController@edit');
Route::post('update/{id}','PhonesController@update');

查看edit.blade.php

<div class="container">
    <div class="col-sm-offset-2 col-sm-8">
        <div class="panel panel-default">
            <div class="panel-heading">
                Edit {{$phone->name}}
            </div>

            <div class="panel-body">
                <!-- Display Validation Errors -->
                <!-- New Task Form -->
            <form action="{{url('update/'.$phone->id)}}" method="POST" class="form-horizontal">
                        @csrf     


                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-6">    
                        <button type="submit" class="btn btn-primary">
@method('put')
                            <i class="fa fa-edit"></i> Edit
                        </button>
                    </div>
                </div>
                </form>
            </div>
        </div> 

和控制器

public function edit($id)
{
    $phone= Phone::find($id);

    return view('edit',compact('phone'));
}

public function update(Request $request,$id)
{
    $this->validate($request, [
        'name' => 'required|max:10',
        'model'=>'required'
    ]);

    $phone=new Phone();
    $phone->name=$request->input('name');
    $phone->model=$request->input('model');
    $phone->save();

    return back();
}

只是这个问题我尝试了其他方法但仍然遇到同样的问题 谢谢。

【问题讨论】:

  • 您的表单中没有&lt;input name="_method" type="hidden" value="PUT"&gt;,是吗?
  • 什么编辑按钮?这里没有任何东西可以发送 PUT 请求或带有欺骗性 _method 的 POST 请求作为 PUT,这里没有任何东西可以发送 post 请求
  • 我有,但我剪掉了,因为代码太烂了
  • 用信息编辑您的问题,不要将代码添加到 cmets
  • 您将“更新”路由定义为 POST,但您发送的是 PUT 请求,就这么简单:-)

标签: php laravel-5 controller routes laravel-blade


【解决方案1】:

您的编辑路线不应该是PUT,而应该是GET。如果您想以这种方式提交,则应将更新路线调整为 PUT:

Route::get('edit/{id}', 'PhonesController@edit');
Route::put('update/{id}','PhonesController@update');

那么,将您发送到编辑页面的内容可能只是一个常规超链接 (GET),它也允许您重定向到它。

【讨论】:

  • 不是如果你想重定向到它..所以不,它不正确,它应该是 GET
  • 当我按下编辑它/s 重定向到编辑页面但是当我在这里确认编辑它的一个问题
  • 您的控制器正在执行重定向“返回”,这将是“编辑”页面,重定向是 GET 请求,因此它必须是 GET 路由 ...
  • 好的,我更改了它,但仍然遇到问题 此路由不支持 GET 方法。支持的方法:PUT。
  • 感谢它正在工作,但在 edit.blade.php 中仍然有错误
猜你喜欢
  • 2019-12-29
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
相关资源
最近更新 更多