getNames(); $models = Options::find()->where(["in", "name", $names])->indexBy("name")->all(); foreach ($names as $name) { if (isset($models[$name])) { $this->$name = $models[$name]->value; } else { $this->name = ''; } } } /** * @inheritdoc */ public function attributeLabels() { return [ 'website_title' => yii::t('app', 'Website Title'), 'website_email' => yii::t('app', 'Website Email'), 'website_language' => yii::t('app', 'Website Language'), 'website_icp' => yii::t('app', 'Icp Sn'), 'website_statics_script' => yii::t('app', 'Statics Script'), 'website_status' => yii::t('app', 'Website Status'), 'website_timezone' => yii::t('app', 'Website Timezone'), 'website_comment' => yii::t('app', 'Open Comment'), 'website_comment_need_verify' => yii::t('app', 'Open Comment Verify'), 'website_url' => yii::t('app', 'Website Url'), 'seo_keywords' => yii::t('app', 'Seo Keywords'), 'seo_description' => yii::t('app', 'Seo Description'), ]; } /** * @inheritdoc */ public function rules() { return [ [ [ 'website_title', 'website_language', 'website_icp', 'website_statics_script', 'website_timezone', 'seo_keywords', 'seo_description' ], 'string' ], [ 'website_url', 'required'], [ 'website_url', 'validatorWebsiteUrl'], [ 'website_email', 'email'], [['website_status', 'website_comment', 'website_comment_need_verify'], 'integer'], ]; } public function validatorWebsiteUrl($attribute, $params) { if( strpos($this->$attribute, "https://") === 0 || strpos($this->$attribute, "http://") === 0 || strpos($this->$attribute, "//") === 0 ){ return; } $this->addError($attribute, yii::t("app", '{attribute} must begin with https:// or http:// or //', ['attribute'=>yii::t('app', 'Website Url')])); return; } /** * 写入网站配置到数据库 * * @return bool */ public function setWebsiteConfig() { $names = $this->getNames(); foreach ($names as $name) { $model = self::findOne(['name' => $name]); if ($model != null) { $value = $this->$name; $value === null && $value = ''; $model->value = $value; $result = $model->save(false); } else { $model = new Options(); $model->name = $name; $model->value = ''; $result = $model->save(false); } if ($result == false) { return false; } } return true; } }