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 所写,浏览器仅限于 GET
和 POST
请求。
最后但同样重要的是,浏览器或在这种情况下 HTML 表单是愚蠢的。
也许有一天这会改变,谁知道呢。
我正在尝试使用 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 所写,浏览器仅限于 GET
和 POST
请求。
最后但同样重要的是,浏览器或在这种情况下 HTML 表单是愚蠢的。 也许有一天这会改变,谁知道呢。