Commit 8596ef4b015ae35c3d934c285c069c3329fa21a1

Authored by Alexey Boroda
1 parent f3b6b9b1

-Seo component ready

common/config/main.php
1 <?php 1 <?php
  2 + use artbox\core\components\SeoComponent;
  3 +
2 return [ 4 return [
3 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', 5 'vendorPath' => dirname(dirname(__DIR__)) . '/vendor',
4 'components' => [ 6 'components' => [
@@ -17,5 +19,8 @@ @@ -17,5 +19,8 @@
17 'class' => 'yii2tech\filedb\Connection', 19 'class' => 'yii2tech\filedb\Connection',
18 'path' => '@common/config', 20 'path' => '@common/config',
19 ], 21 ],
  22 + 'seo' => [
  23 + 'class' => SeoComponent::className(),
  24 + ],
20 ], 25 ],
21 ]; 26 ];
frontend/controllers/PageController.php
1 <?php 1 <?php
2 namespace frontend\controllers; 2 namespace frontend\controllers;
3 - 3 +
  4 + use artbox\core\components\SeoComponent;
4 use artbox\core\models\Page; 5 use artbox\core\models\Page;
5 use yii\helpers\Json; 6 use yii\helpers\Json;
6 use yii\helpers\Url; 7 use yii\helpers\Url;
7 use yii\web\Controller; 8 use yii\web\Controller;
8 use yii\web\NotFoundHttpException; 9 use yii\web\NotFoundHttpException;
9 - 10 + use Yii;
  11 +
10 /** 12 /**
11 * Class PageController 13 * Class PageController
12 * 14 *
@@ -17,9 +19,15 @@ @@ -17,9 +19,15 @@
17 public function actionView($id) 19 public function actionView($id)
18 { 20 {
19 $model = $this->findModel($id); 21 $model = $this->findModel($id);
20 - 22 +
  23 + /**
  24 + * @var SeoComponent $seo
  25 + */
  26 + $seo = Yii::$app->get('seo');
  27 + $seo->setModel($model->lang);
  28 +
21 var_dump(Url::to(Json::decode($model->lang->alias->route))); 29 var_dump(Url::to(Json::decode($model->lang->alias->route)));
22 - 30 +
23 return $this->render( 31 return $this->render(
24 'view', 32 'view',
25 [ 33 [
@@ -27,12 +35,25 @@ @@ -27,12 +35,25 @@
27 ] 35 ]
28 ); 36 );
29 } 37 }
30 - 38 +
31 protected function findModel($id) 39 protected function findModel($id)
32 { 40 {
33 - $model = Page::findOne($id);  
34 - 41 + /**
  42 + * @var Page $model
  43 + */
  44 + $model = Page::find()
  45 + ->where(
  46 + [
  47 + 'id' => $id,
  48 + ]
  49 + )
  50 + ->with('lang')
  51 + ->one();
  52 +
35 if (!empty($model)) { 53 if (!empty($model)) {
  54 + if ($model->lang->alias_id !== Yii::$app->seo->aliasId) {
  55 + throw new NotFoundHttpException('Wrong language');
  56 + }
36 return $model; 57 return $model;
37 } else { 58 } else {
38 throw new NotFoundHttpException('Model not found'); 59 throw new NotFoundHttpException('Model not found');
frontend/views/page/view.php
1 <?php 1 <?php
  2 + use artbox\core\models\Language;
2 use artbox\core\models\Page; 3 use artbox\core\models\Page;
3 use yii\helpers\Url; 4 use yii\helpers\Url;
4 use yii\web\View; 5 use yii\web\View;
@@ -7,7 +8,6 @@ @@ -7,7 +8,6 @@
7 * @var View $this 8 * @var View $this
8 * @var Page $model 9 * @var Page $model
9 */ 10 */
10 -  
11 ?> 11 ?>
12 12
13 <h1> 13 <h1>
@@ -16,7 +16,8 @@ @@ -16,7 +16,8 @@
16 <?= Url::to( 16 <?= Url::to(
17 [ 17 [
18 'page/view', 18 'page/view',
19 - 'id' => 10, 19 + 'id' => $model->id,
  20 + 'lang' => Language::getCurrent()->id,
20 ] 21 ]
21 ) ?> 22 ) ?>
22 </h1> 23 </h1>
23 \ No newline at end of file 24 \ No newline at end of file