Laravel 9 html 表单提交抛出 405。期望 PUT,请求是 GET

Laravel 9 html form submit throws 405. Expects PUT, request is GET

我正在尝试使用 Laravel 9 创建一个简单的 CRUD 应用程序。我 运行 遇到了 HTML 表格的问题。我创建了一个页面,您可以在其中编辑我数据库中现有的兔子数据。

我的表格

<form name="editRabbitForm" action="{{ url('/rabbit/update') }}" method="PUT">
  {{ csrf_field() }}
  <!-- here be input fields -->
  <button type="submit" class="btn btn-success">Save</button>
  <a type="button" href="/rabbits" class="btn btn-danger">Cancel</a>
</form>

web.php 航线

<?php
use Illuminate\Support\Facades\Auth;
use App\Http\Controllers\QuoteController;
use App\Http\Controllers\RabbitController;
use Illuminate\Support\Facades\Route;

Route::get('/rabbits', [RabbitController::class, 'index']);
Route::get('/rabbit/edit/{id}', [RabbitController::class, 'edit']);
Route::put('/rabbit/update', [RabbitController::class, 'update']);

RabbitController.php

<?php

namespace App\Http\Controllers;

use App\Models\Rabbit;
use Illuminate\Http\Request;

class RabbitController extends Controller
{
    public function index() {
        return view('rabbits.index', ['rabbits' => Rabbit::all()]);
    }

    public function edit($id) {
        return view('rabbits.edit', ['rabbit' => Rabbit::where('breed_id', $id)->first()]);
    }

    public function update(Request $request) {
        echo("SOME SORT OF RESULT!");
        var_dump($request);
    }
}

在我什至点击控制器之前,我得到一个异常读数: The GET method is not supported for this route. Supported methods: PUT.

我真的不明白我在这种情况下做错了什么

正如我上面的评论所述:

要发送看跌请求,您需要将 method 更改为 POST 并在表单中添加 @method('PUT')。这将为该方法插入一个隐藏的输入。 Laravel 然后会自动将此请求路由到路由文件中的 put 路由指定的方法。

这是必需的,因为正如@ADyson 所写,浏览器仅限于 GETPOST 请求。

最后但同样重要的是,浏览器或在这种情况下 HTML 表单是愚蠢的。 也许有一天这会改变,谁知道呢。