diff --git a/frontend/controllers/AccountsController.php b/frontend/controllers/AccountsController.php new file mode 100644 index 0000000..31949f4 --- /dev/null +++ b/frontend/controllers/AccountsController.php @@ -0,0 +1,128 @@ + [ + 'class' => AccessControl::className(), + 'rules' => [ + [ + 'actions' => ['cabinet','change-password'], + 'allow' => true, + 'roles' => ['@'], + ], + ], + ], + ]; + } + + + public function actionCabinet() + { + + + $model = $this->findModel(Yii::$app->user->identity->id); + + + if ($model->load(Yii::$app->request->post()) && $model->validate()) { + + $model->save(); + + } + + return $this->render('cabinet', [ + 'model' => $model + ]); + + + + } + + public function actionIndex() + { + $dataProvider = new ActiveDataProvider([ + 'query' => News::find()->where(['is_active'=>1]), + 'pagination' => [ + 'pageSize' => 16, + ], + + ]); + return $this->render('index',[ + 'dataProvider' => $dataProvider + ]); + } + + public function actionView($translit) + { + + $activeNews = $this->findModel($translit); + $next_news = News::find()->where(['is_active'=>1])->andWhere('id > :id',[':id' => $activeNews->id])->one(); + $prev_news = News::find()->where(['is_active'=>1])->andWhere('id < :id',[':id' => $activeNews->id])->one(); + + return $this->render('view', [ + 'model' => $activeNews, + 'next_news' => $next_news instanceof News ? $next_news : '', + 'prev_news' => $prev_news instanceof News ? $prev_news : '' + ]); + } + + protected function findModel($id) + { + + if (($model = Accounts::findOne(["id"=>$id])) !== null) { + return $model; + } else { + throw new NotFoundHttpException('The requested page does not exist.'); + } + } + + + public function actionChangePassword(){ + + + $form = new ChangePasswordForm(); + + + if ($form->load(Yii::$app->request->post()) && $form->validate()) { + + $model = Accounts::findOne(Yii::$app->user->identity->id); + + $model->load(Yii::$app->request->post(), 'ChangePasswordForm'); + + $model->save(); + + return $this->redirect(['cabinet']); + + } else { + + return $this->render('change-password', [ + 'model' => $form + ]); + + } + } + + + + +} diff --git a/frontend/views/accounts/cabinet.php b/frontend/views/accounts/cabinet.php new file mode 100755 index 0000000..210891e --- /dev/null +++ b/frontend/views/accounts/cabinet.php @@ -0,0 +1,7 @@ +title = 'Мой профиль'; +$this->params['breadcrumbs'][] = $this->title; +?> + +

title ?>

\ No newline at end of file diff --git a/frontend/views/layouts/main.php b/frontend/views/layouts/main.php index 1d3c63a..39ee72d 100755 --- a/frontend/views/layouts/main.php +++ b/frontend/views/layouts/main.php @@ -56,7 +56,7 @@ AppAsset::register($this);
Профиль
- user->identity->email,['/cabinet/index']) ?> + user->identity->email,['accounts/cabinet']) ?> -- libgit2 0.21.4