Есть ли вменяемый способ складывать файлы конфигурации Laravel 5.7? - PullRequest
0 голосов
/ 22 февраля 2019

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

Что-то вроде этого,

config/site.php
  return [
    'foo' => 10,
    'bar' => 20,
    'baz' => 30
  ];

config/site1/site.php
  return [
    'foo' => 5,
  ];

config/site2/site.php
  return [
    'baz' => 99
  ];

, котороепозволяет получить следующие значения обратно

 echo config('site1.site.foo'); // 5  - from site1/site.php
 echo config('site1.site.bar'); // 20 - from site.php
 echo config('site1.site.baz'); // 30 - from site.php

 echo config('site2.site.foo'); // 10 - from site.php
 echo config('site2.site.bar'); // 20 - from site.php
 echo config('site2.site.baz'); // 99 - from site2/site.php

Такое ощущение, что мне не хватает тривиального ответа ...

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

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

function configWithTenant($tenant='', $configPath) {
   if (empty($tenant)) {
    return config($configPath);
   }

   return config("$tenant.$configpath");
}

, поэтому, когда вы вызываете эту функцию, если не передан ни один из арендаторов, она будет читать по умолчанию ту, которая является siteиначе он будет читать tenant1.site

0 голосов
/ 22 февраля 2019

Сейчас я могу думать только об одном и предполагать, что у вас есть несколько экземпляров.

1) В вашей переменной среды добавьте CLIENT=site1

2) Создайте файл конфигурации, например: tenant.php

return [
   'folder' => env('CLIENT', 'default')
]; 

3) Когда вам нужен определенный файл конфигурации для одного из ваших клиентов:

config(config('tenant.folder')'.site.baz');

4) Если вам нужно значение по умолчанию при baz не существует

config(config('tenant.folder')'.site.baz', 'default.site.baz');

Гораздо лучшим способом было бы создание базы данных настроек, которые вы можете кэшировать и использовать с помощниками (например: $baz = settings('baz', 'default');)

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