Sou*_*ose 5 php laravel laravel-5 laravel-5.4
我们对多个站点使用相同的代码库.并且将有配置文件,它们都是特定于站点的设置和常用设置.我们希望将常用设置与站点特定设置合并.
我们的配置文件夹结构是 -
app/config -
等等.ssc并且brg将举行现场具体CONFIGS为ssc与brg分别的网站.
为此我们必须这样做 -
config('common');
config('brg.settings');
Run Code Online (Sandbox Code Playgroud)
但在我们的代码库中,我们没有使用子文件夹机制.当我们将实现子文件夹系统时,我们必须更改代码库以实现我想要避免的站点特定文件夹.
有没有办法实现子文件夹系统,而不必更改代码库?
在多租户环境中
您可以将设置合并到中间件内的通用配置中,或者在您知道自己所在的站点时:
config('common');
config('brg.settings'); // inside each have the same keys
config('ssc.settings'); // inside each have the same keys
Run Code Online (Sandbox Code Playgroud)
因此,假设您想要common.settings来自settings其中一个,brg.settings或者scc.settings您可以尝试如下所示:
config([
'common' => array_merge(
config('brg'),
config('common')
)
]);
Run Code Online (Sandbox Code Playgroud)
如果你想修改它,使其brg.settings成为公共键,请尝试以下操作:
config([
'common' => array_merge(
config('brg.settings'),
config('common')
)
]);
Run Code Online (Sandbox Code Playgroud)
更新 - 对于共享(复制)文件夹方法
假设您的配置文件夹有:
config/common.php
config/brg/settings.php
Run Code Online (Sandbox Code Playgroud)
然后你可以尝试创建一个从config/brg/settings.php到 的符号链接config/settings.php
$ cd config
$ ln -s brg/settings.php settings.php
Run Code Online (Sandbox Code Playgroud)
您甚至可能想将brg/settings.phpconfig 文件夹移出,sites/brg/settings/php以避免 laravel 构建所有站点配置的组合,而只需使用 config 中的符号链接到您想要的内容。
或者
作为部署的一部分,您可以创建一个 artisan 命令来创建您需要的物理配置文件,例如config/site/settings.php给定 .env 内的站点。
我认为将站点特定配置移出配置文件夹以避免 Laravel 需要解析不需要的文件仍然是件好事。
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |