无法使用简单的Laravel Login控制器设置

时间:2013-09-05 14:24:27

标签: php laravel

我刚刚决定从CodeIgniter迁移后才开始使用Laravel,但是我无法获得一个简单的登录表单。我一直收到“MethodNotAllowedHttpException”错误。

以下是我的控制器的外观

class LoginController extends BaseController {

    public function login()
    {
        $username = $_POST['username'];
        $password = $_POST['password'];
        Login::login($username, $password); 
        // ^ Call to Login model to check the user's credentials - everything fine there
    }

}

这是我的观点

{{ Form::open(array('url' => 'LoginController/login')) }}
        {{ Form::text('username') }}
        {{ Form::password('password') }}
        {{ Form::submit('Submit') }}
{{ Form::close }}

我的路线就像

Route::get('LoginController/login', 'LoginController@login');

我在某处做了一些可怕的错事,你能指出来吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

好像你只是在路由GET方法。您还应该路由POST方法以使控制器工作:

Route::get('LoginController/login', 'LoginController@login');
Route::post('LoginController/login', 'LoginController@login');

通常,最好必须在控制器中分离方法来处理不同的逻辑。如下:

Route::get('login', 'LoginController@showLogin');
Route::post('login', 'LoginController@processLogin');

通过这种方式,您可以更加具体地使用控制器的方法,一个只显示登录页面,另一个实际执行登录过程。


<强>更新

如果要在Laravel中检索输入值,则应使用Input类,以便替换当前代码:

$username = $_POST['username'];
$password = $_POST['password'];

如下:

$username = Input::get('username');
$password = Input::get('password');

快乐的编码!

答案 1 :(得分:2)

您需要将表单方法指定为POST,以便它显示为

{{ Form::open(array('url' => 'LoginController/login', 'method'=>'POST')) }}
        {{ Form::text('username') }}
        {{ Form::password('password') }}
        {{ Form::submit('Submit') }}
{{ Form::close }}

在你的路线文件中添加以下内容

Route::post('/login', array('uses' => 'LoginController@login')