/** * Creates a new Redirect model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Redirect(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model]); } }
public static function processRedirect() { $redirects = CacheHelper::get('redirects'); if (empty($redirects)) { $redirects = (new Query())->select(['old_url', 'new_url'])->from(Redirect::tableName())->all(); $redirects = ArrayHelper::map($redirects, 'old_url', 'new_url'); CacheHelper::set('redirects', $redirects, CacheHelper::getTag(self::className())); } $url = $_SERVER['REQUEST_URI']; if (isset($redirects[$url])) { Yii::$app->response->redirect($redirects[$url], 301); } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Redirect::find(); $query->orderBy(['old_url' => SORT_ASC]); $dataProvider = new ActiveDataProvider(['query' => $query]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['like', 'old_url', $this->old_url])->andFilterWhere(['like', 'new_url', $this->new_url]); return $dataProvider; }
<?php $params = array_merge(require __DIR__ . '/../../common/config/params.php', require __DIR__ . '/../../common/config/params-local.php', require __DIR__ . '/params.php', require __DIR__ . '/params-local.php'); return ['id' => 'radiata-fronend', 'basePath' => dirname(__DIR__), 'bootstrap' => ['log', 'radiata'], 'modules' => ['radiata' => ['class' => 'common\\modules\\radiata\\Radiata'], 'banner' => ['class' => 'common\\modules\\banner\\Banner', 'controllerNamespace' => 'frontend\\modules\\banner\\controllers', 'layoutPath' => '@frontend/views/layouts', 'viewPath' => '@frontend/modules/banner/views', 'defaultRoute' => 'banner'], 'vote' => ['class' => 'common\\modules\\vote\\Vote', 'controllerNamespace' => 'frontend\\modules\\vote\\controllers', 'layoutPath' => '@frontend/views/layouts', 'viewPath' => '@frontend/modules/vote/views', 'defaultRoute' => 'vote'], 'page' => ['class' => 'common\\modules\\page\\Page', 'controllerNamespace' => 'frontend\\modules\\page\\controllers', 'layoutPath' => '@frontend/views/layouts', 'viewPath' => '@frontend/modules/page/views', 'defaultRoute' => 'page'], 'news' => ['class' => 'common\\modules\\news\\News', 'controllerNamespace' => 'frontend\\modules\\news\\controllers', 'layoutPath' => '@frontend/views/layouts', 'viewPath' => '@frontend/modules/news/views', 'defaultRoute' => 'news'], 'slider' => ['class' => 'common\\modules\\slider\\Slider', 'controllerNamespace' => 'frontend\\modules\\slider\\controllers', 'layoutPath' => '@frontend/views/layouts', 'viewPath' => '@frontend/modules/slider/views', 'defaultRoute' => 'slider'], 'menu' => ['class' => 'common\\modules\\menu\\Menu', 'controllerNamespace' => 'frontend\\modules\\menu\\controllers', 'layoutPath' => '@frontend/views/layouts', 'viewPath' => '@frontend/modules/menu/views', 'defaultRoute' => 'menu']], 'controllerNamespace' => 'frontend\\controllers', 'components' => ['user' => ['identityClass' => 'common\\models\\user\\User', 'enableAutoLogin' => true], 'log' => ['traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [['class' => 'yii\\log\\FileTarget', 'levels' => ['error', 'warning']]]], 'errorHandler' => ['errorAction' => 'site/error']], 'params' => $params, 'on beforeRequest' => function ($event) { \common\modules\radiata\models\Redirect::processRedirect(); }];