platx/yii2-settings

此包已被弃用,不再维护。没有建议的替代包。

Yii2 数据库设置

安装数: 2,171

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 3

分叉: 0

开放问题: 0

类型:yii2-extension

dev-master 2016-09-30 15:20 UTC

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(); ?>