【问题标题】:Laravel Controller not workingLaravel 控制器不工作
【发布时间】:2013-09-09 16:23:09
【问题描述】:

我是 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 类 UsersController 不存在”

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

which PHP

在我的终端中,它显示 /usr/bin/php。所以,它可能没有使用正确的 PHP 版本。

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

非常感谢!

【问题讨论】:

    标签: laravel laravel-4


    【解决方案1】:

    您需要使用 Route::controller 方法来引用您的 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 或 POST..)

    【讨论】:

    • 说找不到命令。在引入新课程后必须更新课程是什么意思?为什么 Laravel 又比 CodeIgniter 好?
    • 抱歉,添加新类后更新类我错了。这不适用于此处 - 我将更新上述内容。您仍然需要更改方法名称
    • @Lance 你的问题是使用 Route::get.. 看看上面
    • @Lance 澄清并测试了关于作曲家的观点,已在上面更新#
    • Laravel 在很多方面都更好,在其他方面也是如此。使用适合您项目的任何一个。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 2018-07-03
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多