路由 contato 不支持 GET 方法。支持的方法:POST (Laravel 11)

问题描述 投票:0回答:1

我是 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>

这是错误的屏幕截图: 截图

php laravel laravel-11
1个回答
0
投票

错误消息“The GET method is notsupported forroute contato.Supported method: POST”表明您正在尝试使用 GET 方法访问

/contato
路由,但它只接受 POST 请求。要解决此问题,请确保您通过 POST 请求(通常是提交表单)访问
/contato
路由。

以下是一些需要检查的事项:

  1. 确保您通过 GET 访问表单页面:确保您有单独的 GET 路由来显示联系表单,如下所示:

    Route::get('/contato', function () {
        return view('app.contato');
    })->name('app.contato.form');
    
  2. 更新您的表单操作:确保您的表单操作正确指向 POST 路由:

    <form action="{{ route('app.contato') }}" method="POST">
    

    这在您的示例中已经是正确的,因为您使用的是正确的路线。

  3. 完成 POST 处理程序:确保处理表单提交的路线在您的

    web.php
    中:

    Route::post('/contato', [ContatoController::class, 'contato'])->name('app.contato');
    
  4. 清除路由缓存:有时 Laravel 会缓存路由,因此请尝试使用以下命令清除路由缓存:

    php artisan route:clear
    
  5. 检查浏览器行为:如果您在表单提交后刷新页面,请确保您的浏览器没有尝试以 GET 请求方式访问表单。您可能希望在控制器中处理 POST 请求后实现重定向。

实施这些更改,您应该能够提交表单而不会遇到错误。

© www.soinside.com 2019 - 2024. All rights reserved.