@Curgun

Опции из БД в глобальный массив для доступности в любой точке приложения. Как реализовать такое?

Всем привет. Например есть таблица в БД вида id|setting_name|setting_value - где хранятся базовые сеттинги приложения, например глобальный тайтл, апи-ключи и т.д.

Каким оптимальным способом можно реализовать возможность достучаться до сеттинга в любой точке приложения, например через массив setting['option_name'] или метод setting('option_name')?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 2
swede2k
@swede2k
Full-stack developer
Существует куча готовых решений:
anlutro/laravel-settings
Если не хочется брать готовое, можно посмотреть принцип реализации.
Ответ написан
Комментировать
Controller.php
class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public $settings;


    public function __construct(Request $req)
    {

        $this->middleware(function ($request, $next) use ($req)
        {
            $settings = Settings::all();

            foreach($settings AS $id => $item)
            {
                $this->settings[$item["param"]] = $item["value"];
                View::share ( $item["param"], $item["value"] );
            }

            return $next($request);
        });
    }
}


Использование

Контроллер:
$this->settings["title"];

В шаблоне:
{{ $title }}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы