是否影响Laravel API的全局应用设置?

时间:2019-06-28 02:13:17

标签: laravel api settings

我希望实现一些全局应用设置,例如应用程序名称,一周中的第一天以及其他功能标记。最终目标是让管理员通过API来获取和编辑这些内容。

最方便的方法是什么?我已经尝试过使用设置模型来存储键值对,但这对我来说没有意义,因为所需的设置应该经过硬编码,并且不会更改,并且播种“设置”表听起来并不理想。预先感谢!

1 个答案:

答案 0 :(得分:0)

您可以从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
]; 

为了检索“ the_week_of_the_week”,您可以使用相同的功能配置

$firstDayOfTheWeek = config('week.first_day_of_the_week')

类似于其他基本标志,您可以创建一个新的配置文件。 您以后可以使用以下命令缓存配置变量。

php artisan config:cache

您还可以在laravel项目中任何首选位置内创建一个Helper类。我将帮助器类保留在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();

编辑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
]);