我是 Laravel 新手!我在表单中遇到错误“路由联系不支持 GET 方法。支持的方法:POST”。我已经尝试了几次更正但没有成功。
web.php
route::post('/contato', [ContatoController::class, 'contato'])->name('app.contato');
ContatoController.php
class ContatoController extends Controller
{
public function contato( Request $request){
dd($request);
return view('app.contato');
}
}
contato.blade.php
<form action="{{ route('app.contato') }}" method="post">
@csrf
<label for="nome">Nome:</label>
<input type="text" id="nome" name="nome">
<label for="email">Email:</label>
<input type="email" id="email" name="email">
<label for="mensagem">Mensagem:</label>
<textarea id="mensagem" name="mensagem"></textarea>
<button type="submit">Enviar</button>
</form>
这是错误的屏幕截图: 截图
错误消息“The GET method is notsupported forroute contato.Supported method: POST”表明您正在尝试使用 GET 方法访问
/contato
路由,但它只接受 POST 请求。要解决此问题,请确保您通过 POST 请求(通常是提交表单)访问 /contato
路由。
以下是一些需要检查的事项:
确保您通过 GET 访问表单页面:确保您有单独的 GET 路由来显示联系表单,如下所示:
Route::get('/contato', function () {
return view('app.contato');
})->name('app.contato.form');
更新您的表单操作:确保您的表单操作正确指向 POST 路由:
<form action="{{ route('app.contato') }}" method="POST">
这在您的示例中已经是正确的,因为您使用的是正确的路线。
完成 POST 处理程序:确保处理表单提交的路线在您的
web.php
中:
Route::post('/contato', [ContatoController::class, 'contato'])->name('app.contato');
清除路由缓存:有时 Laravel 会缓存路由,因此请尝试使用以下命令清除路由缓存:
php artisan route:clear
检查浏览器行为:如果您在表单提交后刷新页面,请确保您的浏览器没有尝试以 GET 请求方式访问表单。您可能希望在控制器中处理 POST 请求后实现重定向。
实施这些更改,您应该能够提交表单而不会遇到错误。