inspirenmy/yii2-config

Yii2 扩展,允许从数据库表或默认配置中获取应用程序参数、文本或电子邮件模板,并通过管理面板动态导入和管理。

安装: 952

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 2

类型:yii2-extension

v0.3.7 2017-09-22 06:39 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:20:59 UTC


README

#Yii2 扩展 - 配置

##描述

Yii2 扩展,允许从数据库表或默认配置中获取应用程序参数、文本或电子邮件模板,并通过管理面板动态导入和管理。

此扩展包含以下组件

  1. 配置组件
  2. 模板引擎组件
  3. 电子邮件模板引擎和composer引擎组件

##内容

##安装

  1. 从composer获取
composer require inspirenmy/yii2-config

或在composer.json的"require"部分添加依赖

"inspirenmy/yii2-config": "*"
  1. 手动或使用迁移机制(将文件demo/tbl_config.phpdemo/tbl_template.phpdemo/tbl_email_template.php复制到migrations文件夹)创建配置存储和模板存储的数据库表。

##配置组件

允许从数据库表获取参数,如果不存在,则从以下源获取

  • 直接从方法调用参数
  • 从应用程序参数文件
  • 从自定义单独的配置文件

允许在初始化任何组件时设置参数

  • 直接在app配置文件中目标组件的配置部分
  • 在app配置文件中配置组件的配置部分使用bootstrap部分
  • 在初始化任何组件的配置部分调用\Yii::createObject

###配置

####简单设置

return [
    //...
    'components' => [
        //...
        'config' => 'inspirenmy\config\Configurator',
    ],
];

####灵活设置 Configurator 类有几个参数可以修改

  • 类 (class)
  • 配置存储数据库表名称 (tableName)
  • 自定义默认配置参数的文件名 (defaultConfigFile)
return [
    //...
    'components' => [
        //...
        'config' => [
            'class' => 'inspirenmy\config\Configurator',
            'tableName' => 'tbl_config',
            'defaultConfigFile' => '@common/data/default.php',
        ],
    ],
];

####配置事件处理器 组件类有几个参数可以修改

  • 类 (class)
  • 缺失存储的文件名 (fileStorage)
  • 缺失存储的目录名 (folderStorage)

重要

指定为folderStorage的目录必须存在。在这里,如果存在某些配置参数,将创建fileStorage文件。建议预先创建文件夹,并在其中包含.gitkeep文件。

return [
    //...
    'components' => [
        //...
        'config' => [
            //...
            'handler' => [
                'class' => 'testHandler',
                'config'=> [
                    'fileStorage' => 'missing_configs',
                    'folderStorage' => '@common/data/',
                ],
            ],
        ],
    ],
];

###使用方法

此扩展的目标是通过Web应用程序管理员修改系统配置和模板,因此所有用法都将实现修改功能。

尝试使用复杂名称作为参数键,格式为点状风格:moduleName.paramNamemoduleName.submoduleName.paramName。不要使用appconfig作为moduleName。这是保留的。

####前端

#####获取配置应用程序的参数

从数据库或\Yii::$app->params数组获取应用程序配置参数。

获取器按顺序执行以下步骤。如果找到值,则中断传递。这里

  • 内部类变量(如果此参数已被请求使用)
  • 缓存(使用默认的\Yii::$app->cache
  • 数据库表(使用tableName表)
  • 自定义参数defaultValue(如果设置了第二个参数defaultValue
  • 自定义默认配置参数数组(defaultConfigFile
  • \Yii::$app->params数组 在最后,如果找不到值,则抛出异常。
\Yii::$app->config->get('paramName');

\Yii::$app->config->get('paramName', 'defaultValue');

如果参数的值在数据库表(或缓存视图)中不存在,则处理程序(fileStorage)将将其添加到缺失的配置文件中。之后,网络应用程序管理员可以将缺失的值(以及所有默认值)导入数据库表并修改它们。

如果某些配置参数需要更安全的设置级别,您可以使用本地参数文件来避免在公共仓库中提交它们。

#####通过键的掩码获取配置参数的数组

从数据库中通过键的掩码获取配置参数的数组。

获取器按顺序执行以下步骤。如果找到值,则中断传递。这里

  • 内部类变量(如果此参数已被请求使用)
  • 缓存(使用默认的\Yii::$app->cache
  • 数据库表(使用tableName表)最后,如果找不到键掩码的值,则结果将显示为空数组。
\Yii::$app->config->getLike('beginParamName');

例如,

\Yii::$app->config->getLike('someModule');

将返回与someModule相关的所有参数

  • someModule.param1
  • someModule.param2
  • someModule.submodule.param1
  • ...

#####获取应用程序参数

从数据库或\Yii::$app中获取应用程序参数。

\Yii::$app->config->app('paramName');

例如,

\Yii::$app->config->app('name');

将返回存储在数据库中的您的应用程序名称,如果不存在,则直接从应用程序配置(\Yii::$app->name)中获取。

#####使用配置器配置其他组件

######直接修改配置文件

配置器可以直接用于在配置文件中预配置其他组件。这些组件应包含并使用ConfigurableTrait(示例见demo)。

例如,配置sms组件使用sms.senderNumber参数

// ...
'sms' => [
    'class' => 'inspirenmy\sms\Sender',
    'senderNumber' => [
        'component' => 'config',
        'sms.senderNumber' => 'AppName',
    ],
],

######组件的引导

配置器可以预配置实现引导接口的其他组件。

将配置组件添加到应用程序引导部分

return [
    // ...
    'bootstrap' => [..., 'config', ...],
    // ...
],

然后填写引导组件部分

return [
    //...
    'components' => [
        //...
        'config' => [
            //...
            'bootstrap' => [
                'cloudStorage' => [
                    'key' => 'cloud_amazons3_key',
                    'secret' => 'cloud_amazons3_secret',
                    'bucket' => 'cloud_amazons3_bucket',
                    'cloudStorageBaseUrl' => 'cloud_amazons3_baseurl',
                ],
                'upload' => [
                    'externalStorageBaseUrl' => 'cloud_amazons3_baseurl',
                ],
            ],
        ],
    ],
];

并将cloud_amazons3_bucketcloud_amazons3_baseurlcloud_amazons3_baseurl添加到参数数组中(或设置默认参数文件),或者将cloud_amazons3_keycloud_amazons3_secret添加到本地参数中,以保护它们。

####后端

在后端部分应使用ConfiguratorAdmin类或继承。它使用ConfiguratorAdminTrait,允许从fileStorage文件导入缺失的配置或从(如果存在)defaultConfigFile文件导入默认配置。

网络应用程序管理员可以

  • 获取配置列表,使用您的应用程序管理员网格模式进行筛选和排序(使用标准的IndexAction等)
  • 修改存在的配置(使用标准的UpdateAction等)
  • 导入缺失的配置(使用admin/ImportMissingAction
  • 如果存在defaultConfigFile文件,则导入默认配置(使用admin/ImportDefaultAction

##模板引擎组件

允许从数据库表获取模板,如果不存在,则从模板源文件获取。在返回之前,它将替换模板变量的所有匹配项。

配置过程与配置组件非常相似,只是类的名称不同——使用inspirenmy\template\TemplateEngine

使用过程与获取配置应用程序的参数非常相似。获取器依次执行以下步骤。如果找到值,则中断传递。这里的流程

  • 内部类变量(如果此参数已被请求使用)
  • 数据库表(使用tableName表)
  • templateFolder文件夹中具有templateExt扩展名的模板源文件最后,如果找不到值,则抛出异常。
\Yii::$app->template->get('templateName');

\Yii::$app->template->get('templateName', ['param1' => 'value1', 'param2' => 'value2']);

如果模板在数据库表中不存在,则处理程序(fileStorage)将将其添加到缺失的模板文件中。之后,网络应用程序管理员可以将缺失的模板导入数据库表并修改它们。

其他过程与配置组件的过程类似。

##电子邮件模板引擎和作曲家引擎组件

允许从数据库获取电子邮件参数,如主题、模板名称,然后从已准备的文件存储(其中管理员可以在后端修改)或如果不存在,则从邮件模板源文件中使用模板。

配置过程与配置组件非常相似,只是类的名称不同——使用inspirenmy\template\Mailer

使用过程与获取配置应用程序的参数非常相似。获取器依次执行以下步骤。如果找到值,则中断传递。这里的流程

  • 内部类变量(如果此参数已被请求使用)
  • 数据库表(使用tableName表)
  • 模板源文件位于mailerComponentViewPath文件夹中。最后,如果找不到模板,则抛出异常。
\Yii::$app->setTemplate('email_key')->setTo('email')->send();

或更详细

\Yii::$app->email
    ->setTemplate('test-html.php')
    ->setTo('inspirenmy@gmail.com')
    ->setFrom('admin@localhost')
    ->setSubject('Your account on ' . $appName)
    ->setParams(['user' => $this, 'appName' => $appName])
    ->send();

如果模板在数据库表中不存在,则处理程序(fileStorage)将将其添加到缺失的模板文件中。之后,网络应用程序管理员可以将缺失的模板导入数据库表并修改它们。

如果配置了参数 redirectEmail,则所有邮件都将重定向到该邮箱(将忽略字段 to)。如果参数 isTransferEnabled 设置为 false,则邮件发送器的选项 useFileTransport 将被设置为 true,而不是实际转移邮件。

其他过程与配置组件的过程类似。