代码之家  ›  专栏  ›  技术社区  ›  Sougata Bose

Laravel配置文件结构

  •  5
  • Sougata Bose  · 技术社区  · 7 年前

    我们对多个站点使用相同的代码库。还有一些配置文件,它们都是特定于站点的和通用的设置。我们希望将公用设置与特定于站点的设置合并。

    我们的配置文件夹结构是-

    应用程序/配置-

    • SSC/
    • BRG/
    • 应用程序.php
    • 普通.php

    等等。 ssc brg 将保存特定于站点的配置 SSC 和; BRG 各站点。

    为此我们必须-

        config('common');
        config('brg.settings');
    

    但是在我们的代码库中,我们没有使用子文件夹机制。当我们要实现子文件夹系统时,我们必须更改代码库以实现我想要避免的特定于站点的文件夹。

    是否有任何方法来实现子文件夹系统,并且不必更改代码库?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Leon Vismer    7 年前

    在多租户环境中

    您可以将这些设置合并到中间件内的公共配置中,或者在您知道自己在哪个站点时:

    config('common');
    config('brg.settings'); // inside each have the same keys
    config('ssc.settings'); // inside each have the same keys
    

    所以说你想要 common.settings 哪里 settings 来自任何一个 brg.settings scc.settings 您可以尝试如下操作:

    config([
        'common' => array_merge(
            config('brg'), 
            config('common')
        )
    ]); 
    

    如果你想修改它 轴承设置 成为常用密钥,请尝试以下操作:

    config([
        'common' => array_merge(
            config('brg.settings'), 
            config('common')
        )
    ]); 
    

    更新-用于共享(复制)文件夹方法

    假设您的配置文件夹具有:

    config/common.php
    config/brg/settings.php
    

    然后您可以尝试从创建符号链接 config/brg/settings.php config/settings.php

    $ cd config
    $ ln -s brg/settings.php settings.php
    

    你甚至可能想移动 brg/settings.php 从config文件夹中 sites/brg/settings/php 为了避免Laravel构建所有站点配置的组合,只需使用config中的symlink即可。

    或者

    作为部署的一部分,您可以创建一个Artisan命令来创建您需要的物理配置文件,比如, config/site/settings.php 考虑到.env中的站点。

    我认为将特定于站点的配置移出config文件夹仍然很好,以避免laravel需要解析不需要的文件。