1

我对 Laravel 框架非常陌生,正在尝试在我的浏览器中加载一个简单的控制器来慢慢掌握事情的窍门。

我在 laravel/app/controllers/ 文件夹中有一个名为 users.php 的文件,它看起来像这样:

class UsersController extends BaseController 
{
    public $restful = true;

    public function action_index()
    {
        echo 'hi';
    }
}

在 routes.php 文件中,我有

Route::get('users', 'UsersController@index');

但是,当我去

http://localhost:8888/laravel/public/users

我收到一条消息,上面写着“ReflectionException Class UsersController 不存在”

在此处输入图像描述

我不确定这是否是因为我没有安装 PHP 的 mcrypt 扩展。但是,当我检查 MAMP 上的 php.ini 文件时,它说它已启用。输入时

which PHP

在我的终端中,它说 /usr/bin/php。因此,它可能没有使用正确版本的 PHP。

我不完全确定这是路由问题,还是由于缺少重要的 PHP 扩展。

非常感谢!

4

2 回答 2

3

您需要使用 Route::controller 方法来引用您的控制器:

Route::controller('test', 'TestController');

...并将您的文件(如 Cryode 提到的)重命名为TestController.php.

注意 - 如果您想使用文件名作为 test.php,那么您将需要使用composer来更新自动加载设置。

最后,在 Laravel 4 中更改了 Controller 方法的名称格式,尝试重命名方法

public function action_index() {}

成为

public function getIndex() {}

代表get一个 HTTP GET 请求...同样适用于post(HTTP POST) 和any(GET or POST.. )

于 2013-09-05T18:17:22.657 回答
2

我不熟悉 Laravel 源代码的那一部分,所以我不完全确定这是问题所在,但你的控制器文件名应该与控制器类名匹配,包括大写。

users.php应该如此UsersController.php。现在,当我自己故意这样做时,我在include()通话中收到“没有这样的文件或目录”错误,这就是为什么我不确定这是你问题的唯一原因。但这可能是一个开始。

于 2013-09-05T19:22:19.130 回答