[ 'class' => 'yii\web\ErrorAction', ], ]; } /** * @inheritdoc */ public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'feedback' => [ 'post' ], ], ], ]; } /** * Displays homepage. * * @return mixed */ public function actionIndex() { /** * @var \artbox\core\components\SeoComponent $seo */ $seo = \Yii::$app->get('seo'); $seo->setAlias( new DummyAlias( [ 'title' => \Yii::t('app', 'Главная страница'), ] ) ); $categories = Category::find() ->with('categories.lang', 'lang') ->where([ 'level' => 0 ]) ->all(); $topItems = Product::find() ->with('lang.alias', 'image', 'variants') ->is('mask', 1) ->limit(20) ->all(); $newItems = Product::find() ->with('lang.alias', 'image', 'variants') ->is('mask', 2) ->limit(20) ->all(); $saleItems = Product::find() ->with('lang.alias', 'image', 'variants') ->is('mask', 4) ->limit(20) ->all(); $productCount = Product::find() ->count(); $brandCount = Brand::find() ->count(); $brands = Brand::find() ->joinWith('lang') ->where([ 'status' => true ]) ->andWhere( [ 'not', [ 'image_id' => null ], ] ) ->orderBy( [ 'sort' => SORT_ASC, 'title' => SORT_ASC, ] ) ->limit(6) ->with('image') ->all(); $articles = Article::find() ->orderBy('sort') ->with( [ 'lang', 'image', 'category.lang', ] ) ->limit(4) ->all(); $slider = Slider::find() ->with('image') ->where([ 'status' => true ]) ->orderBy( [ 'sort' => SORT_ASC, ] ) ->all(); return $this->render( 'index', [ 'categories' => $categories, 'topItems' => $topItems, 'newItems' => $newItems, 'saleItems' => $saleItems, 'productCount' => $productCount, 'brandCount' => $brandCount, 'brands' => $brands, 'articles' => $articles, 'slider' => $slider, ] ); } /** * Displays contact page. * * @return mixed */ public function actionContact() { $contact = new Feedback(); return $this->render( 'contact', [ 'contact' => $contact, ] ); } /** * Displays about page. * * @return mixed */ public function actionAbout() { return $this->render('about'); } /** * Action to view robots.txt file dinamycli * * @return string */ public function actionRobots() { $response = \Yii::$app->response; /** * @var Settings $settings */ $settings = Settings::find() ->one(); $temp = tmpfile(); fwrite($temp, $settings->robots); $meta = stream_get_meta_data($temp); $response->format = $response::FORMAT_RAW; $response->headers->set('Content-Type', 'text/plain'); return $this->renderFile($meta[ 'uri' ]); } public function actionFeedback() { Yii::$app->response->format = Response::FORMAT_JSON; if (empty(Yii::$app->request->post())) { throw new BadRequestHttpException(); } else { $model = new Feedback( [ 'scenario' => Feedback::SCENARIO_CONTACT, ] ); if ($model->load(Yii::$app->request->post()) && $model->save()) { die(var_dump($model)); return [ 'success' => true, 'message' => \Yii::t('app', 'Заявка успешно отправлена'), 'alert' => '

' . \Yii::t('app', 'Заявка успешно отправлена') . '

' . \Yii::t( 'app', 'Спасибо, Ваша заявка успешно отправлена. Наши менеджеры свяжутся с Вами в ближайшее время' ) . '

', ]; } else { return [ 'success' => false, 'error' => $model->errors, ]; } } } public function actionCallback() { Yii::$app->response->format = Response::FORMAT_JSON; $model = new Feedback( [ 'scenario' => Feedback::SCENARIO_CALLBACK, ] ); if ($model->load(Yii::$app->request->post()) && $model->save()) { \Yii::$app->session->setFlash( 'success', Html::tag( 'div', Html::tag( 'h3', \Yii::t('app', 'Обратный звонок') ) . Html::tag( 'p', \Yii::t( 'app', 'Ваша заявка успешно отправлена. Мы свяжемся с Вами в ближайшее время.' ) ) ) ); return $this->redirect($model->returnUrl ? : [ 'index' ]); } else { return [ 'success' => false, 'error' => $model->errors, ]; } } public function actionLogin() { if (!\Yii::$app->user->isGuest) { return $this->redirect([ 'index' ]); } $loginForm = new LoginForm(); $signupForm = new SignupForm(); if ($loginForm->load(\Yii::$app->request->post()) && $loginForm->login()) { if (!empty($loginForm->returnUrl)) { return $this->redirect($loginForm->returnUrl); } else { return $this->redirect([ 'index' ]); } } if ($signupForm->load(\Yii::$app->request->post())) { if ($user = $signupForm->signup()) { if (\Yii::$app->getUser() ->login($user) ) { return $this->redirect([ 'index' ]); } } } return $this->render( 'login', [ 'loginForm' => $loginForm, 'signupForm' => $signupForm, ] ); } public function actionLogout() { \Yii::$app->user->logout(); return $this->redirect([ 'index' ]); } /** * Requests password reset. * * @return mixed */ public function actionRequestPasswordReset() { $model = new PasswordResetRequestForm(); if ($model->load(Yii::$app->request->post()) && $model->validate()) { if ($model->sendEmail()) { \Yii::$app->session->setFlash( 'success', 'Проверьте свой email. На него была выслана ссылка для сброса пароля' ); return $this->redirect([ '/' ]); } else { \Yii::$app->session->setFlash( 'error', 'Sorry, we are unable to reset password for the provided email address.' ); } } return $this->render( 'requestPasswordResetToken', [ 'model' => $model, ] ); } /** * Resets password. * * @param string $token * * @return mixed * @throws BadRequestHttpException */ public function actionResetPassword($token) { try { $model = new ResetPasswordForm($token); } catch (InvalidParamException $e) { throw new BadRequestHttpException($e->getMessage()); } if ($model->load(Yii::$app->request->post()) && $model->validate() && $model->resetPassword()) { Yii::$app->session->setFlash('success', 'Новый пароль сохранен.'); return $this->redirect([ '/' ]); } return $this->render( 'resetPassword', [ 'model' => $model, ] ); } }