platx / yii2-settings
此包已被弃用,不再维护。没有建议的替代包。
Yii2 数据库设置
dev-master
2016-09-30 15:20 UTC
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2020-10-16 21:13:02 UTC
README
Yii2 数据库设置。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
php composer.phar require --prefer-dist platx/yii2-settings "*"
或添加以下内容到你的 composer.json
文件的 require 部分。
"platx/yii2-settings": "*"
```
使用方法
首先,你需要创建一个迁移,用于创建设置表。
class m000000_000004_create_table_setting extends \platx\settings\CreateSettingTableMigration{}
要插入新的设置,创建一个继承自 \platx\settings\SettingsMigration 并实现参数 protected $_rows 的迁移,如下所示
protected $_rows = [ [ self::FIELD_SECTION => 'general', self::FIELD_KEY => 'string_setting', self::FIELD_NAME => 'String setting', self::FIELD_HINT => 'Text setting with max value = 255', self::FIELD_VALUE => 'Here some default value of setting', self::FIELD_TYPE => Setting::TYPE_TEXT, self::FIELD_RULES => [ ['string', 'max' => 255], ] ], [ self::FIELD_SECTION => 'general', self::FIELD_KEY => 'integer_setting', self::FIELD_NAME => 'Integer setting', self::FIELD_HINT => 'Setting with integer value', self::FIELD_VALUE => '235', self::FIELD_TYPE => Setting::TYPE_TEXT, self::FIELD_RULES => [ ['integer', 'max' => 500], ] ], [ self::FIELD_SECTION => 'general', self::FIELD_KEY => 'text_setting', self::FIELD_NAME => 'Text setting', self::FIELD_HINT => 'Setting with big text value', self::FIELD_VALUE => 'some big text', self::FIELD_TYPE => Setting::TYPE_TEXTAREA, self::FIELD_RULES => [ ['string'], ] ], [ self::FIELD_SECTION => 'general', self::FIELD_KEY => 'checkbox_setting', self::FIELD_NAME => 'Checkbox setting', self::FIELD_HINT => 'Checkbox setting with true or false condition', self::FIELD_VALUE => '0', self::FIELD_TYPE => Setting::TYPE_CHECKBOX, self::FIELD_RULES => [ ['integer'], ] ], ];
要在你的代码中使用设置值,尝试以下方法
$settingValue = \platx\settings\Setting::get('section.key');
其中 section
- 设置部分,key
- 设置键。
要更新设置值,使用以下代码
\platx\settings\Setting::set('section.key', 'Here put new value for setting');
要更新所有部分的设置,使用 \platx\settings\SettingForm
类。你也可以在你的管理控制器动作中使用 platx\settings\SettingAction
,在你的视图文件中你可以这样做
<?php $form = ActiveForm::begin([ 'options' => ['class' => 'form-horizontal'], 'fieldConfig' => [ 'template' => '{label}<div class="col-sm-10">{input}{error}{hint}</div>', 'labelOptions' => ['class' => 'col-sm-2 control-label'], ], ]); ?> <?php foreach ($settingForm->getSettings() as $key => $settingModel) : ?> <?php if ($settingModel->type_key == $settingModel::TYPE_TEXT) { $field = $form->field($settingForm, $key); } if ($settingModel->type_key == $settingModel::TYPE_TEXTAREA) { $field = $form->field($settingForm, $key)->textarea(['rows' => 8]); } if ($settingModel->type_key == $settingModel::TYPE_EDITOR) { $field = $form->field($settingForm, $key)->widget(CKEditor::className(), [ 'options' => ['rows' => 6], 'preset' => 'full' ]); } if ($settingModel->type_key == $settingModel::TYPE_SELECTBOX) { $field = $form->field($settingForm, $key)->dropDownList($settingModel->getVariants()); } if ($settingModel->type_key == $settingModel::TYPE_SELECTBOX_MULTIPLE) { $field = $form->field($settingForm, $key)->dropDownList($settingModel->getVariants(), ['multiple' => true]); } if ($settingModel->type_key == $settingModel::TYPE_CHECKBOX) { $field = $form->field($settingForm, $key)->checkbox(); } if ($settingModel->type_key == $settingModel::TYPE_RADIO) { $field = $form->field($settingForm, $key)->radio(); } if ($settingModel->type_key == $settingModel::TYPE_RADIOLIST) { $field = $form->field($settingForm, $key)->radioList($settingModel->getVariants()); } echo $field->hint($settingModel->hint); ?> <?php endforeach; ?> <?= Html::submitButton('Save', ['class' => 'btn btn-primary']) ?> <?php $form->end(); ?>