AccountsController.php 1.99 KB
<?php
namespace frontend\controllers;

use common\models\Fields;
use common\models\Language;
use Yii;
use common\models\User;
use common\models\UserInfo;

use yii\filters\AccessControl;
use yii\web\Controller;
use yii\web\NotFoundHttpException;


/**
 * Site controller
 */
class AccountsController extends Controller
{


    public $layout = 'admin';

    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'rules' => [
                    [
                        'actions' => ['cabinet','change-password', 'bookmarks'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],
        ];
    }


    public function actionCabinet()
    {


        $user =  $this->findUser(Yii::$app->user->identity->id);

        $langs = Language::getActiveLanguages();


        if ($user->load(Yii::$app->request->post()) && $user->save()) {
            $user->userInfo->load(Yii::$app->request->post());
            $user->userInfo->save();
            Fields::saveFieldData( Yii::$app->request->post('Fields'), $user->id, $user::className());
            return $this->render('cabinet', [
                'user' => $user,
                'user_info' => $user->userInfo,
                'langs' => $langs,
            ]);

        } else {

            return $this->render('cabinet', [
                'user' => $user,
                'user_info' => $user->userInfo,
                'langs' => $langs,
            ]);

        }


    }

    public function actionBookmarks()
    {
        return $this->render('bookmarks');
    }


    /**
     * @param $id
     * @return User
     * @throws NotFoundHttpException
     */
    protected function findUser($id)
    {

        if ($model = User::findOne(["id"=>$id])) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }



}