定制 sakhnovkrg/yii2-settings 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sakhnovkrg/yii2-settings

Composer 安装命令:

composer require sakhnovkrg/yii2-settings

包简介

Yii2 settings module

README 文档

README

Total Downloads License

⚙️ Yii2 Settings Module

showcase

Installation

The preferred way to install this extension is through composer.

Either run

php composer require --prefer-dist sakhnovkrg/yii2-settings "@dev"

or add

"sakhnovkrg/yii2-settings": "@dev"

to the require section of your composer.json file.

Configuration

Configure console application

'controllerMap' => [
    'migrate' => [
        'class' => \yii\console\controllers\MigrateController::class,
        'migrationPath' => [
            '@app/migrations',
            '@settings/migrations',
        ],
    ],
]
php yii migrate

or just apply

php yii migrate/up --migrationPath=@settings/migrations

Module config example

// /admin/settings/default/index

'modules' => [
    'admin' => [
        'class' => 'app\modules\admin\Module',
        'layout' => '@admin/views/layouts/main.php',
        'as access' => [
            'class' => 'yii\filters\AccessControl',
            'except' => ['default/login'],
            'rules' => [
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ]
        ],
        'modules' => [
            'settings' => [
                'class' => \sakhnovkrg\yii2\settings\Module::class,
            ],
        ],
    ],
],

Components

'components' => [
    'settings' => [
        'class' => \sakhnovkrg\yii2\settings\components\Settings::class,
        // optional
        'modelClass' => \sakhnovkrg\yii2\settings\models\Setting::class,
        'enableFlashMessages' => true,
        'cache' => 'cache',
        'cacheKey' => 'yii2-settings',
        'activeFormClass' => 'yii\\bootstrap5\\ActiveForm',
    ],
    'i18n' => [
        'translations' => [
            'yii2-settings' => [
                'class' => 'yii\i18n\PhpMessageSource',
                'basePath' => '@settings/messages',
            ],
        ],
    ],
],

Usage

Add settings example

<?php

use yii\helpers\Json;

class m230209_092035_add_settings extends \sakhnovkrg\yii2\settings\migrations\Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $this->addSetting(
            // type
            \sakhnovkrg\yii2\settings\types\StringType::class,
            // section, key
            'Home', 'Title',
            // attributes
            ['en' => 'Site name', 'ru' => 'Название сайта'],
            // attributes leabels
            ['en' => 'English', 'ru' => 'Russian'],
            // validators
            [
                [['en', 'ru'], 'required'],
                [['en', 'ru'], 'string', ['max' => 255]]
            ],
            // extra params (depends on the type)
            ['class' => 'form-control'],
            // description
            'Browser tab title on home page'
        );

        $this->addSetting(
            \sakhnovkrg\yii2\settings\types\TextType::class,
            'Home', 'Meta Description',
            ['en' => '', 'ru' => ''],
            ['en' => 'English', 'ru' => 'Russian'],
            [
                [['en', 'ru'], 'string', ['max' => 155]]
            ],
            ['rows' => '2']
        );

        $this->addSetting(
            \sakhnovkrg\yii2\settings\types\StringType::class,
            'Contacts', 'Phone',
            ['field' => '+7 (777) 777-77-77'],
            ['field' => 'Number'],
            [
                [['field'], 'required'],
                [['field'], 'string', ['max' => 255]],
            ]
        );

        $this->addSetting(
            \sakhnovkrg\yii2\settings\types\StringType::class,
            'Contacts', 'Email',
            ['field' => 'mail@example.com'],
            ['field' => 'E-mail'],
            [
                [['field'], 'required'],
                [['field'], 'email'],
                [['field'], 'string', ['max' => 255]],
            ]
        );

        $this->addSetting(
            \sakhnovkrg\yii2\settings\types\SelectType::class,
            'Site', 'Maintenance mode',
            ['field' => 0],
            ['field' => 'Status'],
            [
                [['field'], 'required'],
            ],
            [
                'items' => [
                    1 => 'Enabled',
                    0 => 'Disabled',
                ]
            ]
        );
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        // single
        $this->dropSetting('Site', 'Maintenance mode');

        // group
        $this->dropSettings('Home');
        $this->dropSettings('Contacts');
    }
}

Read

$settings = \Yii::$app->settings;

echo $settings->get('Contacts', 'Phone') // +7 (777) 777-77-77
echo $settings->get('Home', 'Title')['ru'] // 'Название сайта'

sakhnovkrg/yii2-settings 适用场景与选型建议

sakhnovkrg/yii2-settings 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 84 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 02 月 10 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「module」 「options」 「Settings」 「settings management」 「yii」 「yii2」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 sakhnovkrg/yii2-settings 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 sakhnovkrg/yii2-settings 我们能提供哪些服务?
定制开发 / 二次开发

基于 sakhnovkrg/yii2-settings 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 84
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 18
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2023-02-10