Blame view

backend/traits/AliasableTrait.php 2.21 KB
5f2d1ae9   alex   Admin AliasableTr...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  <?php
  
  namespace backend\traits;
  
  /**
   * =====================================================================================================================
   * Трейт, созданный потому что в админке при нескольких языках в SEO блоке языки выбирались не сортированными,
   * и получалась ситуация, когда в основном блоке информация записывалась в УКР, а в SEO был английский блок
   *
   * @see https://artweb.worksection.ua/project/217415/7120237/
   * Прикрепил фото для наглядности
   * =====================================================================================================================
   */
  
  
  use artbox\core\models\Alias;
e3798abb   Anastasia   bug fix with trait
17
  use artbox\core\models\Language;
5f2d1ae9   alex   Admin AliasableTr...
18
19
20
21
  
  trait AliasableTrait
  {
  
e3798abb   Anastasia   bug fix with trait
22
   
5f2d1ae9   alex   Admin AliasableTr...
23
24
25
26
27
  
  	public function getAliases()
  	{
  		return $this->hasMany(Alias::className(), ['route' => 'route'])->orderBy(['id' => SORT_ASC]);
  	}
e3798abb   Anastasia   bug fix with trait
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
      
      /**
       * @return \yii\db\ActiveQuery
       */
      public function getAlias()
      {
          return $this->hasOne(Alias::className(), [ 'route' => 'route' ])
                      ->where(
                          [
                              'language_id' => Language::getCurrent()->id,
                          ]
                      );
      }
      
      /**
       * @return array|\yii\db\ActiveRecord[]
       */
      public function loadAliases()
      {
          $langs = Language::find()
                           ->where(
                               [
                                   'status' => true,
                               ]
                           )
                           ->asArray()
                           ->all();
          
          if ($this->isNewRecord) {
              $aliases = [];
              foreach ($langs as $lang) {
                  $aliases[] = new Alias(
                      [
                          'language_id' => $lang['id'],
                      ]
                  );
              }
              return $aliases;
          } else {
              return $this->getAliases()
                          ->all();
          }
      }
      
      /**
       * @return string
       */
      abstract public function getRoute();
5f2d1ae9   alex   Admin AliasableTr...
76
77
  
  }