Задействовать глобальные настройки приложения для Laravel API? - PullRequest
1 голос
/ 28 июня 2019

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

Какой может быть наиболее удобный способ сделать это?Я экспериментировал с использованием модели «Настройки» для хранения пар «ключ-значение», но для меня это не имеет смысла, поскольку требуемые настройки должны быть жестко запрограммированы и не будут меняться, а заполнение таблицы «Настройки» не звучит идеально.Заранее спасибо!

1 Ответ

0 голосов
/ 28 июня 2019

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

$appName = config('app.name'); 
// This value is retrieved from .env file of APP_NAME=

Если вам нужно сохранить несколько значений, связанных с неделей, вы можете создать новый файл конфигурации week.php

//config/week.php
return [
    ...
    'first_day_of_the_week' => 0
]; 

Чтобы получить first_day_of_the_week, вы можете использовать ту же функцию config

$firstDayOfTheWeek = config('week.first_day_of_the_week')

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

php artisan config:cache

Вы также можете создать класс Helper в любом предпочтительном месте внутри проекта laravel.Я держу свой вспомогательный класс в App \ Helpers.

<?php

namespace App\Helpers;

use Carbon\Carbon;

class DateHelpers
{
    public const DATE_RANGE_SEPARATOR = ' to ';

    public static function getTodayFormat($format = 'Y-m-d')
    {
        $today = Carbon::now();
        $todayDate = Carbon::parse($today->format($format));
        return $todayDate;
    }
    ....
}

Если вам нужно получить значение метода в проекте Laravel, вы можете получить доступ с помощью

$getTodayDateFormat = App\Helpers\DateHelpers::getTodayFormat();

EDIT 1:

Основано на описании вопроса.Вам нужно создать одну строку в таблице настроек.

//create_settings_table.php Migration File
public function up()
    {
        // Create table for storing roles
        Schema::create('settings', function (Blueprint $table) {
            $table->increments('id');
            $table->string('app_name')->default("My App Name");
            $table->unsignedInteger('first_day_of_the_week')->default(1);
            ....
            $table->timestamps();
        });
    }

Вам нужна только одна строка таблицы настроек, чтобы получить / обновить значение по умолчанию.

// Получение первого дня

$first_day_of_the_week = App\Setting::first()->first_day_of_the_week;

// Обновление первого дня

...
$first_day_of_the_week = request('first_day_of_the_week');
App\Setting::first()->update([
    'first_day_of_the_week' => $first_day_of_the_week
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...