[ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => [ 'login', 'error', ], 'allow' => true, ], [ 'allow' => true, 'roles' => [ '@' ], ], ], ], ]; } /** * Display site settings page * * @return string|\yii\web\Response */ public function actionIndex() { $model = $this->findSettings(); $mail = Mail::findOne(1); if ($model->load(Yii::$app->request->post()) && Model::loadMultiple($model->getVariationModels(), \Yii::$app->request->post())) { foreach ($model->getVariationModels() as $index => $lang){ $lang->id = $index+1; } if ($model->save()){ if (!empty($_FILES)){ $name = $this->saveLogo($_FILES['logo']['name'], $_FILES[ 'logo' ][ 'tmp_name' ]); if ($name){ print_r($name); $model->logo = $name; $model->save(); print_r($model->errors); die(); } } } Yii::$app->session->setFlash('success', \Yii::t('core', 'Settings saved')); $mail->load(Yii::$app->request->post()); $mail->save(); return $this->goHome(); } return $this->render( 'settings', [ 'model' => $model, 'mail' => $mail ] ); } public function saveLogo($name, $tmp) { if (!file_exists(\Yii::getAlias('@storage/logo'))) { mkdir(\Yii::getAlias('@storage/logo') , 0777); }else{ foreach (glob(\Yii::getAlias('@storage/logo/*')) as $file) unlink($file); } if (!preg_match("~^([a-zA-Z0-9)(_-]+)\.(jpg|jpeg|gif|png|svg)$~i", $name, $matches)) { return false; } if (!empty($tmp)) { copy( $tmp, \Yii::getAlias('@storage/logo/') . $name ); chmod(\Yii::getAlias('@storage/logo/') . $name, 0777); return $name; } return false; } /** * Find site settings * * @return \yii2tech\filedb\ActiveRecord * @throws \yii\base\InvalidConfigException */ public function findSettings() { if ($model = Settings::find() ->with(['languages' => function (ActiveQuery $query){ $query->indexBy('id'); }]) ->one() ) { return $model; } else { throw new InvalidConfigException('Файл настроек не найден'); } } }