Структура файла конфигурации Laravel - PullRequest
0 голосов
/ 03 июля 2018

Мы используем одну и ту же кодовую базу для нескольких сайтов. И там будут конфигурационные файлы, которые являются и специфическими для сайта и общими настройками. Мы хотим объединить общие настройки с настройками сайта.

Наша структура папок конфигурации -

app / config -

  • ССК /
  • BRG /
  • app.php
  • common.php

и так далее. ssc и brg будут содержать специфичные для сайта конфигурации для ssc и brg сайтов соответственно.

И для этого надо сделать -

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

Но в нашей кодовой базе мы не использовали механизм подпапок. Когда мы будем внедрять систему подпапок, мы должны внести изменения в базу кода, чтобы реализовать папку, специфичную для сайта, которую я хочу избежать.

Есть ли способ реализовать систему подпапок, и вам не нужно менять базу кода?

1 Ответ

0 голосов
/ 03 июля 2018

В многопользовательской среде

Вы можете объединить настройки в общую конфигурацию в промежуточном программном обеспечении или в точке, в которой вы знаете, на каком сайте вы находитесь:

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')
    )
]); 

Если вы хотите изменить его так, чтобы brg.settings стали ключами в общем, попробуйте следующее:

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 из папки конфигурации во что-то вроде sites/brg/settings/php, чтобы избежать сложного построения компоновки всех конфигураций сайтов и просто использовать символическую ссылку в конфигурации с тем, что вы хотите.

С другой стороны

В рамках вашего развертывания вы можете создать кустарную команду, которая создаст нужный вам физический конфигурационный файл, config/site/settings.php с учетом сайта внутри .env.

Я думаю, что все еще хорошо перемещать конфигурацию, специфичную для сайта, из папки конфигурации, чтобы Laravel не нужно было анализировать ненужные файлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...