laravel 抛出 MethodNotAllowedHttpException

9 浏览
0 Comments

laravel 抛出 MethodNotAllowedHttpException

我正在尝试运行一个非常基本的东西。我习惯于使用CI,现在正在学习Laravel 4,但他们的文档并没有让我感到容易!无论如何,我正在尝试创建一个登录表单,并通过在下一个表单中打印数据来确保数据成功提交。我遇到了以下异常:\n

\nSymfony \\ Component \\ HttpKernel \\ Exception \\\n MethodNotAllowedHttpException\n

\n我的MemberController.php文件如下:\n

    public function index()
    {
        if (Session::has('userToken'))
        {
            /*使用令牌从数据库中检索用户数据并加载视图*/
            return View::make('members/profile');
        }else{
            return View::make('members/login');
        }
    }
    public function validateCredentials()
    {
        if(Input::post())
        {
            $email = Input::post('email');
            $password = Input::post('password');
            return "Email: " . $email . " 和 Password: " . $password;
        }else{
            return View::make('members/login');
        }
    }

\n路由如下:\n

Route::get('/', function()
{
    return View::make('hello');
});
Route::get('/members', 'MemberController@index');
Route::get('/validate', 'MemberController@validateCredentials');

\n最后,我的login.php视图文件包含以下表单代码:\n

 'MemberController@validateCredentials')); ?>

\n非常感谢您的帮助。

0
0 Comments

在使用Laravel框架时,出现了"MethodNotAllowedHttpException"的错误。这个错误的原因是使用了"POST"请求,但实际上需要使用"PATCH"请求。为了解决这个问题,在"Form::model"这一行的后面添加以下代码:

<input name="_method" type="hidden" value="PATCH">

在Laravel中,也可以在模板中使用{{ method_field('PATCH') }}来实现相同的效果。

0
0 Comments

问题出现的原因是路由定义错误,路由被定义为GET请求,但表单可能发送的是POST请求。需要将路由定义修改为与表单请求方法匹配的方式。

解决方法是修改路由定义,将其改为POST请求,并且最好使用命名路由来帮助扩展,以防控制器的方法或类发生变化。同时,在视图中使用验证路由作为表单的操作地址。

具体操作如下:

1. 修改路由定义为POST请求:

Route::post('/validate', [MemberController::class, 'validateCredentials']);

2. 使用命名路由:

Route::post('/validate', [MemberController::class, 'validateCredentials'])
    ->name('member.validateCredentials');

3. 在视图中使用验证路由作为表单的操作地址:

...

0
0 Comments

问题的出现原因是因为在一个GET路由中进行了POST请求。解决方法是将验证操作的路由分为两个独立的GET和POST路由。

新增的路由如下:

Route::post('validate', 'MemberController');
Route::get('validate', function () {
    return View::make('members/login');
});

然后,控制器方法可以简化为:

public function validateCredentials()
{
    $email = Input::post('email');
    $password = Input::post('password');
    return "Email: " . $email . " and Password: " . $password;
}

这样就能够避免出现"MethodNotAllowedHttpException"异常错误了。

0