jlorente / yii2-config-variables

一个用于通过数据库处理应用配置的Yii2模块。允许在不繁琐的生产部署中修改变量内容。

1.0.1 2018-07-17 19:17 UTC

This package is auto-updated.

Last update: 2024-09-10 05:59:02 UTC


README

一个用于通过数据库处理应用配置的Yii2模块。允许在不繁琐的生产部署中修改变量内容。

该模块包括控制器和视图,包含基本的CRUD操作,可包含到您的后端应用程序中,允许您直接在生产环境中修改配置参数的值。

介绍

配置变量用于在应用程序中存储配置参数。该包的动机是为了避免使用Yii::$app->params数组,因为每次想要更改这些参数的值时,都必须编写params.php文件并进行生产部署。

使用此插件,您可以在后端区域修改应用程序的配置参数,而无需进行生产部署。

安装

要安装,请运行

$ php composer.phar require jlorente/yii2-config-variables "*"

或添加

    "require": {
        "jlorente/yii2-config-variables": "*"
    }

到您的composer.json文件的require部分,并从您的项目目录运行以下命令。

$ composer update
$ ./yii migrate --migrationPath=@vendor/jlorente/yii2-config-variables/src/migrations

最后一个命令将创建处理配置变量的所需表。

重要!:如果您下载了预发布版本(<1.0.0),则应重新运行迁移。

使用

创建变量

配置变量作为代码的一部分用于在运行时检查其值,因此它们必须存在才能使用,这就是为什么它们不能直接在后端应用程序中创建,而是在迁移中创建。为了在迁移中创建变量,请编写

class mXXXXXX_XXXXXX_a_simple_configuration_variable_creation extends Migration {

    /**
     * @inheritdoc
     */
    public function up() {
        $v = new Variable([
            'code' => 'CODE-OF-MY-CONFIGURATION-VARIABLE',
            'name' => 'A simply boolean configuration variable',
            'type' => Variable::TYPE_BOOLEAN,
            'value' => true
        ]);
        if ($v->save() === false) {
            throw new Exception('Unable to save the configuration variable');
        }
    }
}

配置变量的可用类型包括 TYPE_INT、TYPE_FLOAT、TYPE_STRING、TYPE_BOOLEAN 和 TYPE_OBJECT。

TYPE_OBJECT 是一个特殊类型,应声明为 PHP 关联数组,并作为 stdObject 类进行值检查。TYPE_OBJECT 创建的一个示例可以是

class mXXXXXX_XXXXXX_a_type_object_variable_creation extends Migration {

    /**
     * @inheritdoc
     */
    public function up() {
        $v = new Variable([
            'code' => 'CODE-OF-MY-TYPE_OBJECT-VARIABLE',
            'name' => 'Posts Ranking weights',
            'type' => Variable::TYPE_OBJECT,
            'value' => [
                'postsNumber' => 40,
                'postsValoration' => 40,
                'commentsNumber' => 20
            ]
        ]);
        if ($v->save() === false) {
            throw new Exception('Unable to save the configuration variable');
        }
    }
}

列出、查看和更新变量值。

该扩展附带一个模块,可设置在您的后端区域,以便具有 Variable 模型的基本用户界面操作。此模块提供了列出应用程序中所有变量和修改其值的功能。

要加载此模块,必须将其包含到您的后端应用程序中。

./your-app/config/main.php

    // ... other configurations ...
    "modules" => [
        // ... other modules ...
        "config" => [
            "class" => "jlorente\config\Module"
        ]
    ]

在此示例中,我使用了 "config" 作为 moduleId,并将在此示例中继续使用此名称,但您可以使用任何您想要的名称。

控制器动作的路径是

  • config/variable/index
  • config/variable/view?id=X
  • config/variable/update?id=X

您可能希望在您的后端导航栏中包含到 config/variable/index 路由的链接,以便使其可访问。

该模块包含英文和西班牙语翻译。如果您想包含自己的翻译,可以通过在模块配置中提供 "messageConfig" 属性来实现。

./your-app/config/main.php

    // ... other configurations ...
    "modules" => [
        // ... other modules ...
        "config" => [
            "class" => "jlorente\config\Module",
            "messageConfig" => [
                "basePath" => "PATH-TO-MY-TRANSLATION",
            ]
        ]
    ]

请记住,所有模块翻译都存储在文件 jlorente/config.php 中。

您还可以通过在模块配置中设置布局属性路径来为模块视图使用自己的布局。

./your-app/config/main.php

    // ... other configurations ...
    "modules" => [
        // ... other modules ...
        "config" => [
            "class" => "jlorente\config\Module",
            "layout" => "PATH-TO-MY-LAYOUT"
        ]
    ]

在代码中使用变量

Variable 模型是应该用来检查配置参数值的一个模型。为了做到这一点,请使用静态方法 value。

    $value = Variable::value('CODE-OF-MY-CONFIGURATION-VARIABLE');

返回值将是变量的类型。

类型为 TYPE_OBJECT 的变量将返回一个 stdObject 类的实例。按照前面的例子,如果我想检查 'CODE-OF-MY-TYPE_OBJECT-VARIABLE' 变量的值,我应该这样做。

    $value = Variable::value('CODE-OF-MY-TYPE_OBJECT-VARIABLE');
    echo $value->postsNumber;
    echo $value->postsValoration;
    echo $value->commentsNumber;

有一个简写方法来更改变量实例的值。

    Variable::set('CODE-OF-MY-CONFIGURATION-VARIABLE', 115);

进一步考虑

如果您想扩展 VariableController 并保留提供的翻译,请记住启动模块。如果不这样做,模块和翻译配置将永远不会被加载。

如果是这种情况,请包含

./your-app/config/main.php

    // ... other configurations ...
    "bootstrap" => [
        // ... other module ids ...
        , "config"
    ],

许可证

版权所有 © 2015 José Lorente Martín jose.lorente.martin@gmail.com

许可协议:MIT。详情请见 LICENSE.txt。