Commit 1942306050347d442cc93fb86ea60dbdd08b4973
1 parent
6be43b62
+ 1-уровневое меню на frontend
Showing
5 changed files
with
63 additions
and
60 deletions
Show diff stats
common/models/Menu.php
... | ... | @@ -17,6 +17,29 @@ use Yii; |
17 | 17 | */ |
18 | 18 | class Menu extends \yii\db\ActiveRecord |
19 | 19 | { |
20 | + | |
21 | + public function getMenuList() | |
22 | + { | |
23 | + return yii::$app->db->createCommand(' | |
24 | + SELECT | |
25 | + `termin_lang`.termin_title, `termin_lang`.termin_id | |
26 | + FROM `menu` | |
27 | + INNER JOIN `termin_lang` ON `termin_lang`.termin_id = `menu`.termin_id | |
28 | + AND `termin_lang`.lang_id = '.yii::$app->lang_id.' | |
29 | + ORDER BY `menu`.menu_pid ASC, `menu`.sortorder ASC | |
30 | + ')->queryAll(); | |
31 | +/* | |
32 | + return $this->find() | |
33 | + ->selectOption('`termin_lang`.termin_title') | |
34 | + ->from('menu') | |
35 | + ->join( | |
36 | + 'INNER JOIN', | |
37 | + '`termin_lang`.termin_id = `menu`.termin_id', | |
38 | + ['lang_id' => yii::$app->lang_id]) | |
39 | + ->all(); | |
40 | +*/ | |
41 | + } | |
42 | + | |
20 | 43 | /** |
21 | 44 | * @inheritdoc |
22 | 45 | */ | ... | ... |
common/models/Page-i18n.php deleted
1 | -<?php | |
2 | - | |
3 | -namespace common\models; | |
4 | - | |
5 | -use Yii; | |
6 | - | |
7 | -/** | |
8 | - * This is the model class for table "page". | |
9 | - * | |
10 | - * @property integer $page_id | |
11 | - * @property string $date_add | |
12 | - * @property integer $template_id | |
13 | - * @property integer $image_id | |
14 | - * @property integer $show | |
15 | - */ | |
16 | -class Page extends \yii\db\ActiveRecord | |
17 | -{ | |
18 | - /** | |
19 | - * @inheritdoc | |
20 | - */ | |
21 | - public static function tableName() | |
22 | - { | |
23 | - return 'page'; | |
24 | - } | |
25 | - | |
26 | - /** | |
27 | - * @inheritdoc | |
28 | - */ | |
29 | - public function rules() | |
30 | - { | |
31 | - return [ | |
32 | - [['date_add', 'template_id', 'image_id', 'show'], 'required'], | |
33 | - [['date_add'], 'safe'], | |
34 | - [['template_id', 'image_id', 'show'], 'integer'] | |
35 | - ]; | |
36 | - } | |
37 | - | |
38 | - /** | |
39 | - * @inheritdoc | |
40 | - */ | |
41 | - public function attributeLabels() | |
42 | - { | |
43 | - return [ | |
44 | - 'page_id' => Yii::t('app/Lang', 'Page ID'), | |
45 | - 'date_add' => Yii::t('app/Lang', 'Date Add'), | |
46 | - 'template_id' => Yii::t('app/Lang', 'Template ID'), | |
47 | - 'image_id' => Yii::t('app/Lang', 'Image ID'), | |
48 | - 'show' => Yii::t('app/Lang', 'Show'), | |
49 | - ]; | |
50 | - } | |
51 | -} |
common/models/Page.php
... | ... | @@ -31,7 +31,7 @@ class Page extends \yii\db\ActiveRecord |
31 | 31 | |
32 | 32 | public function getData() |
33 | 33 | { |
34 | - $this->data = PageLang::find()->where(['page_id' => $this->page_id, 'lang_id' => 1])->one(); | |
34 | + $this->data = PageLang::find()->where(['page_id' => $this->page_id, 'lang_id' => yii::$app->lang_id])->one(); | |
35 | 35 | } |
36 | 36 | |
37 | 37 | public function getDataByKey($key) |
... | ... | @@ -45,12 +45,7 @@ class Page extends \yii\db\ActiveRecord |
45 | 45 | } |
46 | 46 | |
47 | 47 | // ==== DATA PAGE LANG FIELD ==== |
48 | - | |
49 | - public function getExtraField($key) | |
50 | - { | |
51 | - return PageLang::find()->where(['page_id' => $this->page_id, 'lang_id' => 1])->one()->$key; | |
52 | - } | |
53 | - | |
48 | + | |
54 | 49 | public function getTitle() |
55 | 50 | { |
56 | 51 | return $this->getDataByKey('title'); | ... | ... |
1 | +<?php | |
2 | +namespace frontend\models; | |
3 | + | |
4 | +use common\models\User; | |
5 | +use common\models\Menu; | |
6 | +use yii\base\Model; | |
7 | +use Yii; | |
8 | + | |
9 | +/** | |
10 | + * Signup form | |
11 | + */ | |
12 | +class Front extends Model | |
13 | +{ | |
14 | + public function actionMenu() | |
15 | + { | |
16 | + return (new Menu)->getMenuList(); | |
17 | + } | |
18 | +} | ... | ... |
frontend/views/layouts/main.php
... | ... | @@ -27,6 +27,7 @@ AppAsset::register($this); |
27 | 27 | |
28 | 28 | <div class="wrap"> |
29 | 29 | <?php |
30 | + | |
30 | 31 | NavBar::begin([ |
31 | 32 | 'brandLabel' => 'My Company', |
32 | 33 | 'brandUrl' => Yii::$app->homeUrl, |
... | ... | @@ -34,27 +35,44 @@ AppAsset::register($this); |
34 | 35 | 'class' => 'navbar-inverse navbar-fixed-top', |
35 | 36 | ], |
36 | 37 | ]); |
38 | + | |
37 | 39 | $menuItems = [ |
38 | 40 | ['label' => 'Home', 'url' => ['/site/index']], |
39 | 41 | ['label' => 'About', 'url' => ['/site/about']], |
40 | 42 | ['label' => 'Contact', 'url' => ['/site/contact']], |
41 | 43 | ]; |
42 | - if (Yii::$app->user->isGuest) { | |
44 | + | |
45 | + // меню с базы | |
46 | + $menuItems = []; | |
47 | + | |
48 | + foreach ((new \frontend\models\Front())->actionMenu() as $row) | |
49 | + { | |
50 | + $menuItems[] = ['label' => $row['termin_title'], 'url' => $row['termin_id']]; | |
51 | + } | |
52 | + | |
53 | + if (Yii::$app->user->isGuest) | |
54 | + { | |
43 | 55 | $menuItems[] = ['label' => 'Signup', 'url' => ['/site/signup']]; |
44 | 56 | $menuItems[] = ['label' => 'Login', 'url' => ['/site/login']]; |
45 | - } else { | |
57 | + } | |
58 | + else | |
59 | + { | |
46 | 60 | $menuItems[] = [ |
47 | 61 | 'label' => 'Logout (' . Yii::$app->user->identity->username . ')', |
48 | 62 | 'url' => ['/site/logout'], |
49 | 63 | 'linkOptions' => ['data-method' => 'post'] |
50 | 64 | ]; |
51 | 65 | } |
66 | + | |
52 | 67 | echo Nav::widget([ |
53 | 68 | 'options' => ['class' => 'navbar-nav navbar-right'], |
54 | 69 | 'items' => $menuItems, |
55 | 70 | ]); |
71 | + | |
56 | 72 | NavBar::end(); |
73 | + | |
57 | 74 | ?> |
75 | + | |
58 | 76 | |
59 | 77 | <div class="container"> |
60 | 78 | <?= Breadcrumbs::widget([ | ... | ... |