【问题标题】:The GET method is not supported for this route. Supported methods: PUT. Student此路由不支持 GET 方法。支持的方法:PUT。学生
【发布时间】:2021-09-12 12:35:26
【问题描述】:

你好我正在做学校项目,我希望老师更新学生的分数(没有资格编辑所有细节)所以我需要另一个功能

我收到了这个错误

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
The GET method is not supported for this route. Supported methods: PUT.

在 web.php 我有这个

Route::put('/updatenoteevaluation/{id}', 'StudentController@updatenoteevaluation')->name('student.update');

在 StudentController.php 我有这个

public function updatenoteevaluation(){
    echo 'test';
}

正如我所说,我只想要一个用于编辑特定字段的功能,所以我不会使用默认的编辑和更新方法, 有人有想法吗? 提前致谢

【问题讨论】:

  • 正如错误所说,您可能正在仅允许 PUT 的端点上执行 GET 请求。由于您正在更新记录,因此将其作为 PUT 请求是有意义的。检查您的实施并确保您的“保存/提交/任何”请求是 PUT。
  • 错误信息表明请求是GET请求。你能add你对你的问题执行请求的代码吗?
  • 我只是从提到的 web.php 部分得到了错误
  • 不,你没有。您只能通过尝试 access 路由来获得此错误。当您只是 define 时,它不会发生。添加代码,否则我们无法为您提供帮助。提示:它可能在刀片或 js 文件中。
  • 你需要声明两条路由,一条GET为老师打开表单,另一条PUT/POST做更新的动作。你错过了 GET 一个。

标签: php laravel laravel-8


【解决方案1】:

你必须在你的html表单中传递@method('PUT')

【讨论】:

    【解决方案2】:

    您可以使用Validator 或自定义FormRequestvalidation。规则可以定义如下:

    [
        'field_that_must_be_present' => 'required', // or 'present'
        'field_that_must_not_be_present' => 'prohibited'
    ]
    

    【讨论】:

      【解决方案3】:

      您创建了一个只允许 HTTP VERB PUT 的路由

      Route::put
      

      如果你需要支持 GET 则创建一个 get 路由

      Route::get
      

      但从您的逻辑来看,使用 put 动词确实有意义,因此请确保在发送 HTTP 请求时您使用的是 put 而不是 get

      【讨论】:

      • 这个回答只能算是评论。
      猜你喜欢
      • 1970-01-01
      • 2019-12-29
      • 2020-04-03
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2023-03-03
      • 2020-01-23
      相关资源
      最近更新 更多