sakhnovkrg / yii2-settings
Yii2 设置模块
dev-main
2023-02-10 11:21 UTC
Requires
- php: >=5.6
- ext-json: *
This package is auto-updated.
Last update: 2024-09-10 14:47:58 UTC
README
⚙️ Yii2 设置模块
安装
安装此扩展的首选方式是通过 Composer。
运行以下命令之一:
php composer require --prefer-dist sakhnovkrg/yii2-settings "@dev"
或者添加以下内容到您的 composer.json
文件的 require 部分:
"sakhnovkrg/yii2-settings": "@dev"
配置
配置控制台应用程序
'controllerMap' => [ 'migrate' => [ 'class' => \yii\console\controllers\MigrateController::class, 'migrationPath' => [ '@app/migrations', '@settings/migrations', ], ], ]
php yii migrate
或者只需应用
php yii migrate/up --migrationPath=@settings/migrations
模块配置示例
// /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' => [ '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', ], ], ], ],
用法
添加设置示例
<?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'); } }
阅读
$settings = \Yii::$app->settings; echo $settings->get('Contacts', 'Phone') // +7 (777) 777-77-77 echo $settings->get('Home', 'Title')['ru'] // 'Название сайта'