Commit e3798abbbb33b593f17db30e0149cc6400b8af97

Authored by Anastasia
1 parent 1c6871b2

bug fix with trait

backend/traits/AliasableTrait.php
... ... @@ -14,20 +14,64 @@ namespace backend\traits;
14 14  
15 15  
16 16 use artbox\core\models\Alias;
17   -use artbox\core\models\traits\AliasableTrait as CoreTrait;
18   -
  17 +use artbox\core\models\Language;
19 18  
20 19 trait AliasableTrait
21 20 {
22 21  
23   -
24   - use CoreTrait {
25   - CoreTrait::getAliases as coreGetAliases;
26   - }
  22 +
27 23  
28 24 public function getAliases()
29 25 {
30 26 return $this->hasMany(Alias::className(), ['route' => 'route'])->orderBy(['id' => SORT_ASC]);
31 27 }
  28 +
  29 + /**
  30 + * @return \yii\db\ActiveQuery
  31 + */
  32 + public function getAlias()
  33 + {
  34 + return $this->hasOne(Alias::className(), [ 'route' => 'route' ])
  35 + ->where(
  36 + [
  37 + 'language_id' => Language::getCurrent()->id,
  38 + ]
  39 + );
  40 + }
  41 +
  42 + /**
  43 + * @return array|\yii\db\ActiveRecord[]
  44 + */
  45 + public function loadAliases()
  46 + {
  47 + $langs = Language::find()
  48 + ->where(
  49 + [
  50 + 'status' => true,
  51 + ]
  52 + )
  53 + ->asArray()
  54 + ->all();
  55 +
  56 + if ($this->isNewRecord) {
  57 + $aliases = [];
  58 + foreach ($langs as $lang) {
  59 + $aliases[] = new Alias(
  60 + [
  61 + 'language_id' => $lang['id'],
  62 + ]
  63 + );
  64 + }
  65 + return $aliases;
  66 + } else {
  67 + return $this->getAliases()
  68 + ->all();
  69 + }
  70 + }
  71 +
  72 + /**
  73 + * @return string
  74 + */
  75 + abstract public function getRoute();
32 76  
33 77 }
... ...
frontend/controllers/BlogController.php
... ... @@ -51,7 +51,7 @@
51 51 )->with(['comments' => function (ActiveQuery $query){
52 52 $query->andWhere(['status' => true]);
53 53 }])
54   - ->joinWith('language')
  54 + ->with(['language','alias'])
55 55 ->where([ 'blog_article.status' => true ])
56 56 ->distinct(),
57 57 'pagination' => [
... ...
frontend/views/blog/_article.php
... ... @@ -18,7 +18,7 @@ $imageHeight = 240;
18 18 <meta itemprop="headline" content="<?= $model->language->title ?>"/> <!-- ХХХ название статьи в H1 -->
19 19 <div class="img-blog-list">
20 20 <div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
21   - <a href="<?= Url::to(['alias' => $model->language->alias]) ?>">
  21 + <a href="<?= Url::to(['alias' => $model->alias]) ?>">
22 22 <!--360x240-->
23 23  
24 24 <?php
... ...