Commit 35f6909fa4065f3471274abce3b6985f8fad792d

Authored by Timur Kastemirov
1 parent f2d30f9f

big shot #2 наши объекты фронт

backend/controllers/ObjectkbController.php
... ... @@ -77,23 +77,24 @@ class ObjectkbController extends Controller
77 77 $sliders = $this->allSliders;
78 78 $model->generateLangs();
79 79  
80   - if ($model->load(Yii::$app->request->post()) && $model->save()) {
81   - return $this->redirect(
82   - [
83   - 'view',
84   - 'id' => $model->id,
85   - ]
86   - );
87   - } else {
88   - return $this->render(
89   - 'create',
90   - [
91   - 'model' => $model,
92   - 'modelLangs' => $model->modelLangs,
93   - 'sliders' => $sliders,
94   - ]
95   - );
  80 + if ($model->loadWithLangs(\Yii::$app->request)) {
  81 + if ($model->saveWithLangs()) {
  82 + return $this->redirect(
  83 + [
  84 + 'view',
  85 + 'id' => $model->id,
  86 + ]
  87 + );
  88 + }
96 89 }
  90 + return $this->render(
  91 + 'create',
  92 + [
  93 + 'model' => $model,
  94 + 'modelLangs' => $model->modelLangs,
  95 + 'sliders' => $sliders,
  96 + ]
  97 + );
97 98 }
98 99  
99 100 /**
... ... @@ -106,9 +107,11 @@ class ObjectkbController extends Controller
106 107 {
107 108 $model = $this->findModel($id);
108 109 $model->generateLangs();
109   -
  110 +
110 111 if ($model->loadWithLangs(\Yii::$app->request)) {
  112 +
111 113 if ($model->saveWithLangs()) {
  114 +
112 115 return $this->redirect(
113 116 [
114 117 'view',
... ...
backend/views/objectkb/_form.php
... ... @@ -26,6 +26,8 @@
26 26 $form = ActiveForm::begin();
27 27 ?>
28 28  
  29 + <p>Выбери слайдер по его названию из списка (слайдер уже должен существовать)</p>
  30 +
29 31 <?= $form->field($model, 'slider_id')
30 32 ->dropDownList(
31 33 $items,
... ...
backend/views/objectkb/_form_language.php
... ... @@ -4,6 +4,7 @@
4 4 use dosamigos\tinymce\TinyMce;
5 5 use yii\web\View;
6 6 use yii\widgets\ActiveForm;
  7 + use artbox\core\helpers\SlugifyDecorator;
7 8  
8 9 /**
9 10 * @var \artbox\core\models\SlideLang $model_lang
... ... @@ -11,26 +12,34 @@
11 12 * @var ActiveForm $form
12 13 * @var View $this
13 14 */
14   - echo $form->field($model_lang, '[' . $language->id . ']aliasValue')
15   - ->textInput();
16 15  
17   - echo $form->field($model_lang, '[' . $language->id . ']upper_text')
  16 + $attributeField = $form->field($model_lang, '[' . $language->id . ']object_name')
18 17 ->textInput([ 'maxlength' => true ]);
19 18  
20   - echo $form->field($model_lang, '[' . $language->id . ']about_object_text')
21   - ->textInput([ 'maxlength' => true ]);
  19 + echo $attributeField;
22 20  
23   - echo $form->field($model_lang, '[' . $language->id . ']object_name')
24   - ->textInput([ 'maxlength' => true ]);
  21 + echo SlugifyDecorator::decorate(
  22 + $form->field($model_lang, '[' . $language->id . ']aliasValue'),
  23 + [ '/alias/slugify' ],
  24 + $attributeField,
  25 + false,
  26 + $language->id
  27 + )
  28 + ->textInput([ 'maxlength' => true ]);
25 29  
26   - echo $form->field($model_lang, '[' . $language->id . ']meta_title')
  30 + echo $form->field($model_lang, '[' . $language->id . ']h1')
27 31 ->textInput([ 'maxlength' => true ]);
28 32  
29   - echo $form->field($model_lang, '[' . $language->id . ']meta_description')
30   - ->textInput([ 'maxlength' => true ]);
  33 + echo $form->field($model_lang, '[' . $language->id . ']upper_text')
  34 + ->textarea([ 'rows' => 7 ]);
31 35  
32   - echo $form->field($model_lang, '[' . $language->id . ']h1')
  36 + echo $form->field($model_lang, '[' . $language->id . ']about_object_text')
  37 + ->textarea([ 'rows' => 7 ]);
  38 +
  39 + echo $form->field($model_lang, '[' . $language->id . ']meta_title')
33 40 ->textInput([ 'maxlength' => true ]);
34 41  
  42 + echo $form->field($model_lang, '[' . $language->id . ']meta_description')
  43 + ->textarea([ 'rows' => 4 ]);
35 44  
36 45 ?>
37 46 \ No newline at end of file
... ...
common/models/Objectkb.php
... ... @@ -103,7 +103,6 @@
103 103 */
104 104 public function getSlider()
105 105 {
106   - return $this->hasOne(Slider::className(), [ 'id' => 'slider_id' ])
107   - ->inverseOf('slides');
  106 + return $this->hasOne(Slider::className(), [ 'id' => 'slider_id' ]);
108 107 }
109 108 }
110 109 \ No newline at end of file
... ...
common/models/ObjectkbLang.php
... ... @@ -31,18 +31,15 @@
31 31 {
32 32 return [
33 33 'slug' => [
34   - 'class' => SlugBehavior::className(),
35   - 'action' => 'objectkb/view',
36   - 'params' => [
  34 + 'class' => SlugBehavior::className(),
  35 + 'action' => 'object/view',
  36 + 'params' => [
37 37 'id' => 'object_id',
38 38 ],
39   - 'fields' => [
40   - 'object_name' => 'Object name',
41   - 'object.id' => 'Object id',
42   - 'upper_text' => 'Object upper text',
43   - 'about_object_text' => 'About Object text',
44   - 'object.lang.object_name' => 'some stuf',
  39 + 'fields' => [
  40 + 'object_name' => 'Object name',
45 41 ],
  42 + 'inAttribute' => 'object_name',
46 43 ],
47 44 ];
48 45 }
... ... @@ -99,13 +96,6 @@
99 96 'targetClass' => Language::className(),
100 97 'targetAttribute' => [ 'language_id' => 'id' ],
101 98 ],
102   -// [
103   -// [ 'alias_id' ],
104   -// 'exist',
105   -// 'skipOnError' => true,
106   -// 'targetClass' => Alias::className(),
107   -// 'targetAttribute' => [ 'alias_id' => 'id' ],
108   -// ],
109 99  
110 100 ];
111 101 }
... ... @@ -118,7 +108,8 @@
118 108 return [
119 109 'object_id' => Yii::t('core', 'Object ID'),
120 110 'language_id' => Yii::t('core', 'Language ID'),
121   - 'alias_id' => Yii::t('core', 'alias ID'),
  111 + 'alias_id' => Yii::t('core', 'Alias'),
  112 + 'aliasValue' => Yii::t('core', 'Alias'),
122 113 'upper_text' => Yii::t('core', 'Upper Text'),
123 114 'about_object_text' => Yii::t('core', 'About object text'),
124 115 'object_name' => Yii::t('core', 'Object name'),
... ...
console/migrations/m180125_201904_drop_alias_id_column_from_object_lang_table.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\db\Migration;
  4 +
  5 +/**
  6 + * Handles dropping alias_id from table `object_lang`.
  7 + */
  8 +class m180125_201904_drop_alias_id_column_from_object_lang_table extends Migration
  9 +{
  10 + /**
  11 + * @inheritdoc
  12 + */
  13 + public function up()
  14 + {
  15 + // drops foreign key for table `alias`
  16 + $this->dropForeignKey(
  17 + 'fk-object_lang-alias_id',
  18 + 'object_lang'
  19 + );
  20 +
  21 + // drops index for column `alias_id`
  22 + $this->dropIndex(
  23 + 'idx-object_lang-alias_id',
  24 + 'object_lang'
  25 + );
  26 + $this->dropColumn('object_lang', 'alias_id');
  27 + }
  28 +
  29 + /**
  30 + * @inheritdoc
  31 + */
  32 + public function down()
  33 + {
  34 + $this->addColumn('object_lang', 'alias_id', $this->integer());
  35 + }
  36 +}
... ...
console/migrations/m180125_202226_add_alias_id_column_to_object_lang_table.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\db\Migration;
  4 +
  5 +/**
  6 + * Handles adding alias_id to table `object_lang`.
  7 + * Has foreign keys to the tables:
  8 + *
  9 + * - `alias`
  10 + */
  11 +class m180125_202226_add_alias_id_column_to_object_lang_table extends Migration
  12 +{
  13 + /**
  14 + * @inheritdoc
  15 + */
  16 + public function up()
  17 + {
  18 + $this->addColumn('object_lang', 'alias_id', $this->integer()->unique());
  19 +
  20 + // creates index for column `alias_id`
  21 + $this->createIndex(
  22 + 'idx-object_lang-alias_id',
  23 + 'object_lang',
  24 + 'alias_id'
  25 + );
  26 +
  27 + // add foreign key for table `alias`
  28 + $this->addForeignKey(
  29 + 'fk-object_lang-alias_id',
  30 + 'object_lang',
  31 + 'alias_id',
  32 + 'alias',
  33 + 'id',
  34 + 'CASCADE'
  35 + );
  36 + }
  37 +
  38 + /**
  39 + * @inheritdoc
  40 + */
  41 + public function down()
  42 + {
  43 + // drops foreign key for table `alias`
  44 + $this->dropForeignKey(
  45 + 'fk-object_lang-alias_id',
  46 + 'object_lang'
  47 + );
  48 +
  49 + // drops index for column `alias_id`
  50 + $this->dropIndex(
  51 + 'idx-object_lang-alias_id',
  52 + 'object_lang'
  53 + );
  54 +
  55 + $this->dropColumn('object_lang', 'alias_id');
  56 + }
  57 +}
... ...
frontend/config/main.php
... ... @@ -49,6 +49,12 @@ return [
49 49 'rules' => [
50 50 '\/robots.txt' => 'site/robots',
51 51 ],
  52 + 'processRoutes' => [
  53 + 'object/view',
  54 +// 'blog/article',
  55 +// 'blog/tag',
  56 +// 'blog/category',
  57 + ],
52 58 ],
53 59 ],
54 60 'params' => $params,
... ...
frontend/controllers/ObjectController.php 0 → 100644
  1 +<?php
  2 + namespace frontend\controllers;
  3 +
  4 + /**
  5 + * User: timur
  6 + * Date: 25.01.18
  7 + * Time: 23:12
  8 + */
  9 +
  10 + use common\models\Objectkb;
  11 + use yii\web\Controller;
  12 + use yii\web\NotFoundHttpException;
  13 +
  14 + class ObjectController extends Controller
  15 + {
  16 + public function actionView($id)
  17 + {
  18 +
  19 + $object = $this->findObject($id);
  20 +
  21 + return $this->render(
  22 + "view",
  23 + [
  24 + 'object' => $object,
  25 + ]
  26 + );
  27 + }
  28 +
  29 + public function findObject($id)
  30 + {
  31 + $model = Objectkb::find()
  32 + ->where(
  33 + [
  34 + 'id' => $id,
  35 + 'status' => true,
  36 + ]
  37 + )
  38 + ->with('lang.alias')
  39 + ->with('image')
  40 + ->with('slider.slides')
  41 + ->one();
  42 +
  43 + if ($model === null) {
  44 + throw new NotFoundHttpException();
  45 + } else {
  46 + return $model;
  47 + }
  48 +
  49 + }
  50 + }
  51 +
0 52 \ No newline at end of file
... ...
frontend/controllers/SiteController.php
... ... @@ -10,6 +10,7 @@
10 10 use yii\web\BadRequestHttpException;
11 11 use yii\web\Controller;
12 12 use yii\web\Response;
  13 + use common\models\Objectkb;
13 14  
14 15 /**
15 16 * Site controller
... ... @@ -101,7 +102,19 @@
101 102  
102 103 public function actionObjects()
103 104 {
104   - return $this->render('objects');
  105 +
  106 + $objects = Objectkb::find()
  107 + ->where(['status'=>true])
  108 + ->with("lang.alias")
  109 + ->with("image")
  110 + ->all();
  111 +
  112 + return $this->render(
  113 + 'objects',
  114 + [
  115 + 'objects' => $objects,
  116 + ]
  117 + );
105 118 } // наши объекты
106 119  
107 120 public function actionGreen()
... ...
frontend/views/layouts/main.php
... ... @@ -444,31 +444,7 @@ _________________________________________________________ --&gt;
444 444  
445 445 <!-- *** FeedBack MODAL END *** -->
446 446  
447   - <!-- *** Breadcrumbs *** -->
448   -<!-- --><?php
449   -// if (!$isHome) {
450   -// ?>
451   -<!-- <div id="heading-breadcrumbs">-->
452   -<!-- <div class="container">-->
453   -<!-- <div class="row">-->
454   -<!-- <div class="col-md-7">-->
455   -<!-- <h1>--><?//= $this->title ?><!--</h1>-->
456   -<!-- </div>-->
457   -<!-- <div class="col-md-5">-->
458   -<!-- --><?//= Breadcrumbs::widget(
459   -// [
460   -// 'links' => isset($this->params[ 'breadcrumbs' ]) ? $this->params[ 'breadcrumbs' ] : [],
461   -// ]
462   -// ) ?>
463   -<!-- -->
464   -<!-- </div>-->
465   -<!-- </div>-->
466   -<!-- </div>-->
467   -<!-- </div>-->
468   -<!-- --><?php
469   -// }
470   -// ?>
471   - <!-- *** Breadcrumbs END *** -->
  447 +
472 448  
473 449 <?= $content ?>
474 450  
... ...
frontend/views/object/view.php 0 → 100644
  1 +<?php
  2 + use common\models\Objectkb;
  3 + use yii\helpers\Url;
  4 + /**
  5 + * User: timur
  6 + * Date: 25.01.18
  7 + * Time: 23:46
  8 + *
  9 + * @var Objectkb $object
  10 + */
  11 +
  12 +
  13 +?>
  14 +
  15 +<div class="container">
  16 + <section class="no-mb">
  17 + <div class="row">
  18 + <div class="col-md-12">
  19 + <p class="lead">
  20 + <?= $object->lang->upper_text ?>
  21 + </p>
  22 + </div>
  23 + </div>
  24 + </section>
  25 +
  26 + <section class="no-mb main-slider">
  27 + <?php
  28 + $slideItems = [];
  29 + foreach ($object->slider->slides as $slide){
  30 + if(isset($slide->lang->image)){
  31 + $slideItems[] = $slide->lang->image->getImg();
  32 + }
  33 + }
  34 + echo \yii\bootstrap\Carousel::widget(
  35 + [
  36 + 'items' => $slideItems
  37 + ]
  38 + );
  39 + ?>
  40 + </section>
  41 +
  42 + <section>
  43 + <div class="row portfolio-project">
  44 + <div class="col-md-8">
  45 + <div class="heading">
  46 + <h3>Про Объект</h3>
  47 + </div>
  48 +
  49 + <p>
  50 + <?= $object->lang->about_object_text?>
  51 + </p>
  52 +
  53 + </div>
  54 + <div class="col-md-4 project-more">
  55 + <div class="heading">
  56 + <h3>Дополнительно</h3>
  57 + </div>
  58 + <h4>КЛИЕНТАМ</h4>
  59 + <p>Нет ограничений по возрасту</p>
  60 + <h4>ЦЕНА</h4>
  61 + <p>В стоимость включен визажист и стилист</p>
  62 + <h4>ОБОРУДОВАНИЕ</h4>
  63 + <p>Canon Mark 5d</p>
  64 + <h4>СТИЛЬ ФОТО</h4>
  65 + <p>Глянец, fashion, гранж, стандарт</p>
  66 + </div>
  67 + </div>
  68 + </section>
  69 +
  70 + <section>
  71 + <div class="row portfolio">
  72 +
  73 + <div class="col-md-12">
  74 + <div class="heading">
  75 + <h3>Посмотреть ещё проекты</h3>
  76 + </div>
  77 + </div>
  78 +
  79 + <?php
  80 +
  81 + $objects = Objectkb::find()
  82 + ->where(['status'=>true])
  83 + ->with("lang.alias")
  84 + ->with("image")
  85 + ->all();
  86 +
  87 + foreach ($objects as $object){
  88 +
  89 + ?>
  90 +
  91 + <div class="col-sm-6 col-md-3">
  92 + <div class="box-image">
  93 + <div class="image">
  94 + <?= $object->image->getImg(['class' => "img-responsive"]) ?>
  95 +<!-- <img src="img/portfolio-1.jpg" alt="" class="img-responsive">-->
  96 + </div>
  97 + <div class="bg"></div>
  98 + <div class="name">
  99 + <h3>
  100 + <a
  101 + href="<?=Url::toRoute(
  102 + [
  103 + 'object/view',
  104 + 'alias' => $object->lang->alias,
  105 + ]
  106 + ) ?>"
  107 + >
  108 + Фото в портфолио
  109 + </a>
  110 + </h3>
  111 + </div>
  112 + <div class="text">
  113 + <p class="buttons">
  114 + <a
  115 + href="<?=Url::toRoute(
  116 + [
  117 + 'object/view',
  118 + 'alias' => $object->lang->alias,
  119 + ]
  120 + ) ?>"
  121 + class="btn btn-template-transparent-primary"
  122 + >
  123 + Посмотреть
  124 + </a>
  125 + </p>
  126 + </div>
  127 + </div>
  128 + <!-- /.box-image -->
  129 +
  130 + </div>
  131 +
  132 + <?php
  133 +
  134 + }
  135 +
  136 + ?>
  137 +
  138 + </div>
  139 + </section>
  140 +</div>
... ...
frontend/views/site/index.php
... ... @@ -27,7 +27,9 @@ $this-&gt;registerJs($js, View::POS_END);
27 27 <?php
28 28 $slideItems = [];
29 29 foreach ($slider->slides as $slide){
30   - $slideItems[] = $slide->lang->image->getImg();
  30 + if(isset($slide->lang->image)){
  31 + $slideItems[] = $slide->lang->image->getImg();
  32 + }
31 33 }
32 34 echo \yii\bootstrap\Carousel::widget(
33 35 [
... ...
frontend/views/site/objects.php
1 1 <?php
2   -
3   -/**
4   - * @var View $this
5   - * @var Feedback $contact
6   - */
7   -
8   -use artbox\core\models\Feedback;
9   -use common\models\Settings;
10   -use frontend\assets\MapAsset;
11   -use yii\helpers\Html;
12   -use yii\bootstrap\ActiveForm;
13   -use yii\web\View;
14   -
15   -$settings = Settings::getInstance();
16   -
17   -$this->title = \Yii::t('app', 'menu-objects');
18   -$this->params[ 'breadcrumbs' ][] = $this->title;
  2 +
  3 + /**
  4 + * @var View $this
  5 + * @var Feedback $contact
  6 + * @var Objectkb[] $objects
  7 + */
  8 +
  9 + use artbox\core\models\Feedback;
  10 + use common\models\Settings;
  11 + use frontend\assets\MapAsset;
  12 + use yii\helpers\Html;
  13 + use yii\bootstrap\ActiveForm;
  14 + use yii\web\View;
  15 + use common\models\Objectkb;
  16 + use yii\helpers\Url;
  17 +
  18 + $settings = Settings::getInstance();
  19 +
  20 + $this->title = \Yii::t('app', 'menu-objects');
  21 + $this->params[ 'breadcrumbs' ][] = $this->title;
19 22 ?>
20 23  
21 24 <div id="objects-wr">
... ... @@ -32,43 +35,52 @@ $this-&gt;params[ &#39;breadcrumbs&#39; ][] = $this-&gt;title;
32 35 <p class="lead">Туристическое агентство “WhereAreYou” осуществляет нестандартные поездки с 2003 года. Мы занимаемся не просто путешествием, а для каждого лично составляем полноценный план поездки: что лучше посетить, длительность пребывания исходя из ваших средств. Все что требуется от вас — назвать город, страну и бюджет.</p>
33 36 </div>
34 37 </div>
35   -
  38 +
36 39 <div class="row portfolio">
37 40 <?php
38   - $objects = [
39   - '1.jpg',
40   - '2.jpg',
41   - '3.jpg',
42   - '4.jpg',
43   - '5.jpg',
44   - '6.jpg',
45   - '7.jpg',
46   - '8.jpg',
47   - ];
  41 +
48 42 foreach ($objects as $object) {
49   - $link = 'img/objects/' . $object;
50   - if (file_exists($link)) {
  43 +
51 44 ?>
52   -
  45 +
53 46 <div class="col-sm-6">
54 47 <div class="box-image">
55 48 <div class="image">
56   - <img src="/<?= $link ?>" alt="" class="img-responsive">
  49 + <?= $object->image->getImg([]) ?>
57 50 </div>
58 51 <div class="bg"></div>
59 52 <div class="name">
60   - <h3><a href="#">Фото в портфолио</a></h3>
  53 + <h3><a
  54 + href="<?=Url::toRoute(
  55 + [
  56 + 'object/view',
  57 + 'alias' => $object->lang->alias,
  58 + ]
  59 + ) ?>"
  60 + >
  61 + Фото в портфолио
  62 + </a>
  63 + </h3>
61 64 </div>
62 65 <div class="text">
63 66 <p class="buttons">
64   - <a href="#" class="btn btn-template-transparent-primary">Посмотреть</a>
  67 + <a
  68 + href="<?=Url::toRoute(
  69 + [
  70 + 'object/view',
  71 + 'alias' => $object->lang->alias,
  72 + ]
  73 + ) ?>"
  74 + class="btn btn-template-transparent-primary"
  75 + >
  76 + Посмотреть
  77 + </a>
65 78 </p>
66 79 </div>
67 80 </div>
68 81 </div>
69   -
70   - <?php
71   - }
  82 +
  83 + <?php
72 84 }
73 85 ?>
74 86 </div>
... ...