我刚刚决定从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');
我在某处做了一些可怕的错事,你能指出来吗?
谢谢!
答案 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')