Laravel 4的新功能。我在刀片模板中创建了一个表单,我正在关注snippet from,它表示您可以使用“Form :: open”将表单操作指向控制器方法。 array('action'=>'Controller @ method'))'。我用artisan创建了一个名为UsersController的新控制器,并在控制器中创建了一个名为userLogin()的新方法。当我在打开表单时指向该方法时,我收到“InvalidArgumentException,Unknown action”错误。如果我将open动作调整为指向UsersController @ index,一切都很好。我已经运行了composer dump-autoload,但问题仍然存在。
login.blade.php的片段:
{{ Form::open(array('action' => 'UsersController@userLogin')) }}
UsersController.php片段:
public function userLogin()
{
//
}
有人能告诉我,如果我遗失了什么吗?
谢谢大家。将以下内容添加到routes.php解决了以下问题:
Route::post('login', 'UsersController@userLogin');
答案 0 :(得分:14)
看起来Laravel没有注册你添加的动作,可能是因为你错过了一条路线。尝试将此类内容添加到app/routes.php
:
Route::post('user/login', 'UsersController@userLogin');
答案 1 :(得分:1)
将路由添加到routes.php后,您是否也更改了Form :: open()?如果没有,您可以将表格发布到/ login或/ user / login。
另外,仅仅因为我对这些事情有点敏感,通常的做法是将控制器和模型设置为单数,因此UsersController将是UserController,并且因为登录功能在用户控制器内,它不需要用户前缀。可以帮助您的代码更具可读性:)
答案 2 :(得分:0)
现在,在laravel 4中你可以使用它:
Route::post('/signup', array('before' => 'csrf', 'uses' => 'UsersController@userLogin'));