Laravel 4中的薄控制器

时间:2013-02-01 12:05:59

标签: php model-view-controller laravel laravel-4

我正在尝试在新的Laravel 4应用程序中找出构建我的控制器/模型的“最佳”方法。

显然,我希望让控制器保持轻薄。所以我想使用Repos / Services来分离事物,但我真的不知道如何在Laravel 4中实现这一点.Laravel 3给了我们some idea of how this should work,但没有样本。

有没有人想出最好的方法,或者有任何示例代码我可以看一眼?

3 个答案:

答案 0 :(得分:7)

我同意这样一个事实,即在Laravel 4中存储这些类的位置并不是很清楚。

一个简单的解决方案是在主应用程序/文件夹中创建存储库/服务文件夹,并更新主要的composer.json文件以使其自动加载:

{
    "require": {
        "laravel/framework": "4.0.*"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/tests/TestCase.php",
            "app/repositories",
            "app/services"
        ]
    },
    "minimum-stability": "dev"
}

注意:每次创建新课时,都必须运行composer dump-autoload

如果是存储库,您可以让Laravel自动将它们注入控制器。我发现this是关于这个主题的一个很好的截屏视频。

答案 1 :(得分:3)

我发现这个教程集合是一个很好的介绍,用于存储您想要注入项目的自定义服务提供者和其他文件的正确位置:

这些教程来自这个系列:

http://fideloper.com/tag/laravel-4

答案 2 :(得分:2)

当我重新安装Laravel时,我做的第一件事就是:

  • 删除"型号"夹
  • 创建一个src文件夹
  • 在src下,创建一个Application文件夹(或应用程序的名称)
  • 在“应用程序”文件夹上,创建实体,存储库,服务和测试

因此,在这种情况下,您的命名空间将是Application \ Entities,Application \ Repositories和Application \ Services

在composer.json中:

{
    "require": {
        "laravel/framework": "4.0.*"
    },
    "autoload": {
        "psr-0": {
            "Application": "app/src/"
        },
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/database/migrations",
        ]
    },
    "minimum-stability": "dev"
}

对于每个人,您需要创建类和服务提供者以将存储库绑定到实体。

这是一个解释如何创建存储库的教程:

http://culttt.com/2013/07/08/creating-flexible-controllers-in-laravel-4-using-repositories/

无论如何,我仍然在寻找最好的建筑。如果有人有更好的想法,我会很高兴听到它!