3

Laravel 4 的新手。我在刀片模板中创建了一个表单,我正在按照片段中的说明,您可以使用 'Form::open(array('action' = > '控制器@方法'))'。我使用 artisan 创建了一个名为 UsersController 的新控制器,并在名为 userLogin() 的控制器中创建了一个新方法。当我在打开表单时指向该方法时,我收到“InvalidArgumentException,未知操作”错误。如果我将打开操作调整为指向 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');
4

3 回答 3

14

看起来 Laravel 没有注册你添加的动作,可能是因为你错过了一条路线。尝试将这样的内容添加到app/routes.php

Route::post('user/login', 'UsersController@userLogin');
于 2013-06-02T05:05:09.607 回答
1

将路由添加到您的 routes.php 后,您是否还更改了 Form::open()?如果没有,您可以将您的表单发布到 /login 或 /user/login。

另外,仅仅因为我对这类事情有点坚持,通常的做法是将控制器和模型作为单数,所以 UsersController 将是 UserController,并且由于登录功能在 User(s)Controller 中,所以它不会'不需要用户前缀。可以帮助您的代码更具可读性:)

于 2013-12-16T20:26:04.760 回答
0

现在在 laravel 4 你可以使用这个:

Route::post('/signup', array('before' => 'csrf', 'uses' => 'UsersController@userLogin'));
于 2014-06-20T09:29:05.467 回答