【问题标题】:Laravel 4 separate config files for packagesLaravel 4 单独的包配置文件
【发布时间】:2014-11-11 05:54:53
【问题描述】:

我的 laravel 4 项目设置了多个环境。

环境设置是:开发称为“开发”,生产称为“生产”。 在我的 app/config 文件夹中,我有两个额外的文件夹。每个环境名称一个。

看截图:

在这些文件夹中,我有单独的 database.php 和 app.php 配置文件。 这些按预期工作。 Laravel 在本地运行时使用我的本地数据库配置,在实时运行时使用生产环境。

现在,我添加了一个需要配置文件的新包。这位于/app/config/packages/greggilbert/config.php

我需要能够像设置数据库一样设置不同的配置文件。所以,我假设在/development/production 中创建相同的文件结构会起作用,但事实似乎并非如此。

这是一个新的截图:

【问题讨论】:

  • 必须将环境命名的文件夹放入包目录:app/config/packages/<vendor>/<package_name>/<environment>/config.php
  • @Quasdunk 这行得通,如果您将此作为答案,我会接受。

标签: php laravel-4


【解决方案1】:

与包相关的、特定于环境的配置文件必须放在包目录中以环境命名的子目录中。所以在你的情况下,这将是

app
   - config
      - packages
         - greggilbert
            - recaptcha
               - development
                  - config.php
               - production
                  - config.php

但在某些情况下它会变得非常丑陋和麻烦。这可以通过应用程序根目录中的enviroment files(在我看来)更简洁、更优雅的方式来解决:

/.env.development.php

<?php
return [

    // any configuration settings for your local environment

    'RECAPTCHA_TEMPLATE' => 'customCaptcha',
    'RECAPTCHA_LANGUAGE' => 'en',

];

这样,您可以保持包目录不变:

app
   - config
      - packages
         - greggilbert
            - recaptcha
               - config.php

Laravel 会根据环境加载环境文件,并通过getenv() 使环境变量全局可用。因此,现在您可以使用 config.php 中的getenv('RECAPTCHA_TEMPLATE') 获取当前环境的指定模板。

【讨论】:

    猜你喜欢
    • 2015-02-22
    • 2023-03-29
    • 2013-06-12
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多