Php Laravel:MethodNotAllowedHttpException:此路由不支持GET方法。支持的方法:POST

Php Laravel:MethodNotAllowedHttpException:此路由不支持GET方法。支持的方法:POST,php,laravel,post,Php,Laravel,Post,我有一个很奇怪的问题。我有一个post路由,但我收到一个错误,此路由不支持GET方法。 这是我的web.php函数: Route::post('/sender',function () { $text = request()->text; event(new FormSubmitted($text)); }); 我肯定是在发邮件请求。 我已经检查过了: 但选择的答案并不清楚 我的视图代码: <?php echo csrf_field(); ?> {{ csr

我有一个很奇怪的问题。我有一个post路由,但我收到一个错误,此路由不支持GET方法。

这是我的web.php函数:

Route::post('/sender',function () {
    $text = request()->text;
    event(new FormSubmitted($text));
});
我肯定是在发邮件请求。 我已经检查过了:

但选择的答案并不清楚

我的视图代码:

<?php echo csrf_field(); ?>

{{ csrf_field() }}



<form action="/sender" method="post>
First name: <input type="text" name="fname"><br>
<input type="hidden" name="_token" value="{{ csrf_token() }}">

<input type="text" name="content"><br>
<input type="submit">

{{csrf_field()}}

我相信这可能只是一个打字错误——你错过了“post”后面的引号(“)

查看:

<form action="/sender" method="post">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    First name: <input type="text" name="fname"><br>
    <input type="text" name="content"><br>
    <input type="submit">
</form>

编辑:更新控制器代码,您正在从名为“text”的输入请求数据,但视图中没有任何名称为“text”的输入,只有输入类型

首先,通过
php artisan route:list
命令检查是否正确定义路由

刃锉

<form action="{{ route('sender') }}" method="post">
@csrf
First name: <input type="text" name="fname"><br>

<input type="text" name="content"><br>
<input type="submit">
如果您使用的是带有控制器的路由,那么您的控制器看起来是这样的

public function sender(Request $request)
{
    $fname = $request->fname;
    event(new FormSubmitted($fname));
}

您是如何为您的应用程序提供服务的?您使用的是什么web服务器软件?请提供您的查看代码,您可能试图在POST路由上使用GET方法。请检查您的
POST
请求没有被服务器重定向到
GET
请求。我最近在重定向base的apache中发现了这一点在请求url的尾部
/
上添加了d。@CodeBoyCode添加了它,但没有更改。我尝试更改我必须“获取”的帖子“请求,这不会引发任何错误。这正常吗?Joe,你是什么意思?就我个人而言,最好的方法是用动作和方法打开表单,然后声明你的CSRF令牌,然后声明你的输入,记住用(我知道你没有包含在代码中,你在代码中做了吗?嘿,乔,我刚刚注意到你的控制器也有问题,这是否解决了你的问题@Joe
Route::post('/sender',function () {
    $text = request()->fname; //access by input field name
    event(new FormSubmitted($text));
})->name('sender');

or

Route::post('/sender', 'UserController@sender')->name('sender');
public function sender(Request $request)
{
    $fname = $request->fname;
    event(new FormSubmitted($fname));
}