Commit 48269590f2997f6618647a088471eb31d2268106
1 parent
754fc7d9
+ Страница getDataByKey метод
Showing
4 changed files
with
66 additions
and
30 deletions
Show diff stats
backend/controllers/PageController.php
... | ... | @@ -8,6 +8,7 @@ use backend\models\SearchPage; |
8 | 8 | use yii\web\Controller; |
9 | 9 | use yii\web\NotFoundHttpException; |
10 | 10 | use yii\filters\VerbFilter; |
11 | +use common\models\PageLang; | |
11 | 12 | |
12 | 13 | /** |
13 | 14 | * PageController implements the CRUD actions for Page model. |
... | ... | @@ -62,10 +63,24 @@ class PageController extends Controller |
62 | 63 | public function actionCreate() |
63 | 64 | { |
64 | 65 | $model = new Page(); |
65 | - | |
66 | - if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
66 | + | |
67 | + if ($model->load(Yii::$app->request->post()) && $model->save()) | |
68 | + { | |
69 | + // сохраняем в таблицу page_lang | |
70 | + $model2 = new PageLang(); | |
71 | + | |
72 | + // передаем переменные | |
73 | + $model2->attributes = $_POST['Page']; | |
74 | + $model2->page_id = $model->page_id; | |
75 | + $model2->lang_id = Yii::$app->lang_id; | |
76 | + | |
77 | + // сохраняем | |
78 | + $model2->save(); | |
79 | + | |
67 | 80 | return $this->redirect(['view', 'id' => $model->page_id]); |
68 | - } else { | |
81 | + } | |
82 | + else | |
83 | + { | |
69 | 84 | return $this->render('create', [ |
70 | 85 | 'model' => $model, |
71 | 86 | ]); |
... | ... | @@ -79,13 +94,22 @@ class PageController extends Controller |
79 | 94 | * @return mixed |
80 | 95 | */ |
81 | 96 | public function actionUpdate($id) |
82 | - { | |
97 | + { | |
83 | 98 | $model = $this->findModel($id); |
84 | 99 | |
85 | - if ($model->load(Yii::$app->request->post()) && $model->save()) { | |
100 | + if ($model->load(Yii::$app->request->post()) && $model->save()) | |
101 | + { | |
102 | + // сохраняем в таблицу page_lang | |
103 | + $model2 = new PageLang(); | |
104 | + | |
105 | + // сохраняем | |
106 | + $model2->save(); | |
107 | + | |
86 | 108 | return $this->redirect(['view', 'id' => $model->page_id]); |
87 | - } else { | |
88 | - return $this->render('update', [ | |
109 | + } | |
110 | + else | |
111 | + { | |
112 | + return $this->render('create', [ | |
89 | 113 | 'model' => $model, |
90 | 114 | ]); |
91 | 115 | } |
... | ... | @@ -113,7 +137,7 @@ class PageController extends Controller |
113 | 137 | */ |
114 | 138 | protected function findModel($id) |
115 | 139 | { |
116 | - if (($model = Page::findOne($id)) !== null) { | |
140 | + if (($model = Page::findOne(['page_id' => $id])) !== null) { | |
117 | 141 | return $model; |
118 | 142 | } else { |
119 | 143 | throw new NotFoundHttpException('The requested page does not exist.'); | ... | ... |
common/messages/uk/field.php
common/models/Page.php
... | ... | @@ -16,19 +16,8 @@ use common\models\PageLang; |
16 | 16 | */ |
17 | 17 | class Page extends \yii\db\ActiveRecord |
18 | 18 | { |
19 | - private static $getAttributeLabelCache; | |
20 | - | |
21 | - public function getAttributeLabel($attribute) | |
22 | - { | |
23 | - $class = get_class($this); | |
24 | - | |
25 | - if (!isset(self::$getAttributeLabelCache[$class][$attribute])) { | |
26 | - self::$getAttributeLabelCache[$class][$attribute] = parent::getAttributeLabel($attribute); | |
27 | - } | |
28 | - | |
29 | - return self::$getAttributeLabelCache[$class][$attribute]; | |
30 | - } | |
31 | - | |
19 | + var $data; | |
20 | + | |
32 | 21 | //public $title; |
33 | 22 | /** |
34 | 23 | * @inheritdoc |
... | ... | @@ -38,7 +27,24 @@ class Page extends \yii\db\ActiveRecord |
38 | 27 | return 'page'; |
39 | 28 | } |
40 | 29 | |
41 | - // ==== EXTRA ==== | |
30 | + // ==== DATA PAGE LANG ==== | |
31 | + | |
32 | + public function getData() | |
33 | + { | |
34 | + $this->data = PageLang::find()->where(['page_id' => $this->page_id, 'lang_id' => 1])->one(); | |
35 | + } | |
36 | + | |
37 | + public function getDataByKey($key) | |
38 | + { | |
39 | + if (! $this->data) | |
40 | + { | |
41 | + $this->getData(); | |
42 | + } | |
43 | + | |
44 | + return isset ($this->data[$key]) ? $this->data[$key] : 'NO FIELD'; | |
45 | + } | |
46 | + | |
47 | + // ==== DATA PAGE LANG FIELD ==== | |
42 | 48 | |
43 | 49 | public function getExtraField($key) |
44 | 50 | { |
... | ... | @@ -47,27 +53,27 @@ class Page extends \yii\db\ActiveRecord |
47 | 53 | |
48 | 54 | public function getTitle() |
49 | 55 | { |
50 | - return $this->getExtraField('title'); | |
56 | + return $this->getDataByKey('title'); | |
51 | 57 | } |
52 | 58 | |
53 | 59 | public function getMeta_title() |
54 | 60 | { |
55 | - return $this->getExtraField('meta_title'); | |
61 | + return $this->getDataByKey('meta_title'); | |
56 | 62 | } |
57 | 63 | |
58 | 64 | public function getMeta_description() |
59 | 65 | { |
60 | - return $this->getExtraField('meta_description'); | |
66 | + return $this->getDataByKey('meta_description'); | |
61 | 67 | } |
62 | 68 | |
63 | 69 | public function getText() |
64 | 70 | { |
65 | - return $this->getExtraField('text'); | |
71 | + return $this->getDataByKey('text'); | |
66 | 72 | } |
67 | 73 | |
68 | 74 | public function getPage_alias() |
69 | 75 | { |
70 | - return $this->getExtraField('page_alias'); | |
76 | + return $this->getDataByKey('page_alias'); | |
71 | 77 | } |
72 | 78 | |
73 | 79 | /** |
... | ... | @@ -101,5 +107,11 @@ class Page extends \yii\db\ActiveRecord |
101 | 107 | 'page_alias' => Yii::t('field', 'page_alias'), |
102 | 108 | 'lang_id' => Yii::t('field', 'lang_id'), |
103 | 109 | ]; |
104 | - } | |
110 | + } | |
111 | +/* | |
112 | + public function getPage() | |
113 | + { | |
114 | + return $this->hasMany(PageLang::className(), ['page_id' => 'page_id']); | |
115 | + } | |
116 | +*/ | |
105 | 117 | } | ... | ... |
common/models/PageLang.php
... | ... | @@ -31,7 +31,7 @@ class PageLang extends \yii\db\ActiveRecord |
31 | 31 | public function rules() |
32 | 32 | { |
33 | 33 | return [ |
34 | - [['page_id', 'title', 'meta_title', 'meta_description', 'text', 'page_alias', 'lang_id'], 'required'], | |
34 | + [['page_id', 'title', 'meta_title', 'meta_description', 'text', 'page_alias', 'lang_id'], 'safe'], | |
35 | 35 | [['page_id', 'lang_id'], 'integer'], |
36 | 36 | [['text'], 'string'], |
37 | 37 | [['title', 'page_alias'], 'string', 'max' => 256], | ... | ... |