形式对控制器方法开放 - "未知行动"

时间:2013-06-02 04:33:15

标签: laravel laravel-4

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');

3 个答案:

答案 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'));