diff --git a/backend/controllers/ObjectkbController.php b/backend/controllers/ObjectkbController.php index 11d6489..2a0a225 100644 --- a/backend/controllers/ObjectkbController.php +++ b/backend/controllers/ObjectkbController.php @@ -77,23 +77,24 @@ class ObjectkbController extends Controller $sliders = $this->allSliders; $model->generateLangs(); - if ($model->load(Yii::$app->request->post()) && $model->save()) { - return $this->redirect( - [ - 'view', - 'id' => $model->id, - ] - ); - } else { - return $this->render( - 'create', - [ - 'model' => $model, - 'modelLangs' => $model->modelLangs, - 'sliders' => $sliders, - ] - ); + if ($model->loadWithLangs(\Yii::$app->request)) { + if ($model->saveWithLangs()) { + return $this->redirect( + [ + 'view', + 'id' => $model->id, + ] + ); + } } + return $this->render( + 'create', + [ + 'model' => $model, + 'modelLangs' => $model->modelLangs, + 'sliders' => $sliders, + ] + ); } /** @@ -106,9 +107,11 @@ class ObjectkbController extends Controller { $model = $this->findModel($id); $model->generateLangs(); - + if ($model->loadWithLangs(\Yii::$app->request)) { + if ($model->saveWithLangs()) { + return $this->redirect( [ 'view', diff --git a/backend/views/objectkb/_form.php b/backend/views/objectkb/_form.php index 68e5737..37b62ae 100644 --- a/backend/views/objectkb/_form.php +++ b/backend/views/objectkb/_form.php @@ -26,6 +26,8 @@ $form = ActiveForm::begin(); ?> +

Выбери слайдер по его названию из списка (слайдер уже должен существовать)

+ field($model, 'slider_id') ->dropDownList( $items, diff --git a/backend/views/objectkb/_form_language.php b/backend/views/objectkb/_form_language.php index e1eae99..df17bf7 100755 --- a/backend/views/objectkb/_form_language.php +++ b/backend/views/objectkb/_form_language.php @@ -4,6 +4,7 @@ use dosamigos\tinymce\TinyMce; use yii\web\View; use yii\widgets\ActiveForm; + use artbox\core\helpers\SlugifyDecorator; /** * @var \artbox\core\models\SlideLang $model_lang @@ -11,26 +12,34 @@ * @var ActiveForm $form * @var View $this */ - echo $form->field($model_lang, '[' . $language->id . ']aliasValue') - ->textInput(); - echo $form->field($model_lang, '[' . $language->id . ']upper_text') + $attributeField = $form->field($model_lang, '[' . $language->id . ']object_name') ->textInput([ 'maxlength' => true ]); - echo $form->field($model_lang, '[' . $language->id . ']about_object_text') - ->textInput([ 'maxlength' => true ]); + echo $attributeField; - echo $form->field($model_lang, '[' . $language->id . ']object_name') - ->textInput([ 'maxlength' => true ]); + echo SlugifyDecorator::decorate( + $form->field($model_lang, '[' . $language->id . ']aliasValue'), + [ '/alias/slugify' ], + $attributeField, + false, + $language->id + ) + ->textInput([ 'maxlength' => true ]); - echo $form->field($model_lang, '[' . $language->id . ']meta_title') + echo $form->field($model_lang, '[' . $language->id . ']h1') ->textInput([ 'maxlength' => true ]); - echo $form->field($model_lang, '[' . $language->id . ']meta_description') - ->textInput([ 'maxlength' => true ]); + echo $form->field($model_lang, '[' . $language->id . ']upper_text') + ->textarea([ 'rows' => 7 ]); - echo $form->field($model_lang, '[' . $language->id . ']h1') + echo $form->field($model_lang, '[' . $language->id . ']about_object_text') + ->textarea([ 'rows' => 7 ]); + + echo $form->field($model_lang, '[' . $language->id . ']meta_title') ->textInput([ 'maxlength' => true ]); + echo $form->field($model_lang, '[' . $language->id . ']meta_description') + ->textarea([ 'rows' => 4 ]); ?> \ No newline at end of file diff --git a/common/models/Objectkb.php b/common/models/Objectkb.php index e3914dc..502bde5 100755 --- a/common/models/Objectkb.php +++ b/common/models/Objectkb.php @@ -103,7 +103,6 @@ */ public function getSlider() { - return $this->hasOne(Slider::className(), [ 'id' => 'slider_id' ]) - ->inverseOf('slides'); + return $this->hasOne(Slider::className(), [ 'id' => 'slider_id' ]); } } \ No newline at end of file diff --git a/common/models/ObjectkbLang.php b/common/models/ObjectkbLang.php index b9f0b3e..f440825 100755 --- a/common/models/ObjectkbLang.php +++ b/common/models/ObjectkbLang.php @@ -31,18 +31,15 @@ { return [ 'slug' => [ - 'class' => SlugBehavior::className(), - 'action' => 'objectkb/view', - 'params' => [ + 'class' => SlugBehavior::className(), + 'action' => 'object/view', + 'params' => [ 'id' => 'object_id', ], - 'fields' => [ - 'object_name' => 'Object name', - 'object.id' => 'Object id', - 'upper_text' => 'Object upper text', - 'about_object_text' => 'About Object text', - 'object.lang.object_name' => 'some stuf', + 'fields' => [ + 'object_name' => 'Object name', ], + 'inAttribute' => 'object_name', ], ]; } @@ -99,13 +96,6 @@ 'targetClass' => Language::className(), 'targetAttribute' => [ 'language_id' => 'id' ], ], -// [ -// [ 'alias_id' ], -// 'exist', -// 'skipOnError' => true, -// 'targetClass' => Alias::className(), -// 'targetAttribute' => [ 'alias_id' => 'id' ], -// ], ]; } @@ -118,7 +108,8 @@ return [ 'object_id' => Yii::t('core', 'Object ID'), 'language_id' => Yii::t('core', 'Language ID'), - 'alias_id' => Yii::t('core', 'alias ID'), + 'alias_id' => Yii::t('core', 'Alias'), + 'aliasValue' => Yii::t('core', 'Alias'), 'upper_text' => Yii::t('core', 'Upper Text'), 'about_object_text' => Yii::t('core', 'About object text'), 'object_name' => Yii::t('core', 'Object name'), diff --git a/console/migrations/m180125_201904_drop_alias_id_column_from_object_lang_table.php b/console/migrations/m180125_201904_drop_alias_id_column_from_object_lang_table.php new file mode 100644 index 0000000..440e5f8 --- /dev/null +++ b/console/migrations/m180125_201904_drop_alias_id_column_from_object_lang_table.php @@ -0,0 +1,36 @@ +dropForeignKey( + 'fk-object_lang-alias_id', + 'object_lang' + ); + + // drops index for column `alias_id` + $this->dropIndex( + 'idx-object_lang-alias_id', + 'object_lang' + ); + $this->dropColumn('object_lang', 'alias_id'); + } + + /** + * @inheritdoc + */ + public function down() + { + $this->addColumn('object_lang', 'alias_id', $this->integer()); + } +} diff --git a/console/migrations/m180125_202226_add_alias_id_column_to_object_lang_table.php b/console/migrations/m180125_202226_add_alias_id_column_to_object_lang_table.php new file mode 100644 index 0000000..22926b8 --- /dev/null +++ b/console/migrations/m180125_202226_add_alias_id_column_to_object_lang_table.php @@ -0,0 +1,57 @@ +addColumn('object_lang', 'alias_id', $this->integer()->unique()); + + // creates index for column `alias_id` + $this->createIndex( + 'idx-object_lang-alias_id', + 'object_lang', + 'alias_id' + ); + + // add foreign key for table `alias` + $this->addForeignKey( + 'fk-object_lang-alias_id', + 'object_lang', + 'alias_id', + 'alias', + 'id', + 'CASCADE' + ); + } + + /** + * @inheritdoc + */ + public function down() + { + // drops foreign key for table `alias` + $this->dropForeignKey( + 'fk-object_lang-alias_id', + 'object_lang' + ); + + // drops index for column `alias_id` + $this->dropIndex( + 'idx-object_lang-alias_id', + 'object_lang' + ); + + $this->dropColumn('object_lang', 'alias_id'); + } +} diff --git a/frontend/config/main.php b/frontend/config/main.php index fc991cc..a5e09ea 100644 --- a/frontend/config/main.php +++ b/frontend/config/main.php @@ -49,6 +49,12 @@ return [ 'rules' => [ '\/robots.txt' => 'site/robots', ], + 'processRoutes' => [ + 'object/view', +// 'blog/article', +// 'blog/tag', +// 'blog/category', + ], ], ], 'params' => $params, diff --git a/frontend/controllers/ObjectController.php b/frontend/controllers/ObjectController.php new file mode 100644 index 0000000..31455b5 --- /dev/null +++ b/frontend/controllers/ObjectController.php @@ -0,0 +1,51 @@ +findObject($id); + + return $this->render( + "view", + [ + 'object' => $object, + ] + ); + } + + public function findObject($id) + { + $model = Objectkb::find() + ->where( + [ + 'id' => $id, + 'status' => true, + ] + ) + ->with('lang.alias') + ->with('image') + ->with('slider.slides') + ->one(); + + if ($model === null) { + throw new NotFoundHttpException(); + } else { + return $model; + } + + } + } + \ No newline at end of file diff --git a/frontend/controllers/SiteController.php b/frontend/controllers/SiteController.php index 1f16362..9ccde5f 100644 --- a/frontend/controllers/SiteController.php +++ b/frontend/controllers/SiteController.php @@ -10,6 +10,7 @@ use yii\web\BadRequestHttpException; use yii\web\Controller; use yii\web\Response; + use common\models\Objectkb; /** * Site controller @@ -101,7 +102,19 @@ public function actionObjects() { - return $this->render('objects'); + + $objects = Objectkb::find() + ->where(['status'=>true]) + ->with("lang.alias") + ->with("image") + ->all(); + + return $this->render( + 'objects', + [ + 'objects' => $objects, + ] + ); } // наши объекты public function actionGreen() diff --git a/frontend/views/layouts/main.php b/frontend/views/layouts/main.php index 71bca7f..f964a5e 100644 --- a/frontend/views/layouts/main.php +++ b/frontend/views/layouts/main.php @@ -444,31 +444,7 @@ _________________________________________________________ --> - - - - - - -title ?> - - - isset($this->params[ 'breadcrumbs' ]) ? $this->params[ 'breadcrumbs' ] : [], -// ] -// ) ?> - - - - - - - + diff --git a/frontend/views/object/view.php b/frontend/views/object/view.php new file mode 100644 index 0000000..647654a --- /dev/null +++ b/frontend/views/object/view.php @@ -0,0 +1,140 @@ + + +
+
+
+
+

+ lang->upper_text ?> +

+
+
+
+ +
+ slider->slides as $slide){ + if(isset($slide->lang->image)){ + $slideItems[] = $slide->lang->image->getImg(); + } + } + echo \yii\bootstrap\Carousel::widget( + [ + 'items' => $slideItems + ] + ); + ?> +
+ +
+
+
+
+

Про Объект

+
+ +

+ lang->about_object_text?> +

+ +
+
+
+

Дополнительно

+
+

КЛИЕНТАМ

+

Нет ограничений по возрасту

+

ЦЕНА

+

В стоимость включен визажист и стилист

+

ОБОРУДОВАНИЕ

+

Canon Mark 5d

+

СТИЛЬ ФОТО

+

Глянец, fashion, гранж, стандарт

+
+
+
+ +
+
+ +
+
+

Посмотреть ещё проекты

+
+
+ + where(['status'=>true]) + ->with("lang.alias") + ->with("image") + ->all(); + + foreach ($objects as $object){ + + ?> + +
+
+
+ image->getImg(['class' => "img-responsive"]) ?> + +
+
+ + +
+ + +
+ + + +
+
+
diff --git a/frontend/views/site/index.php b/frontend/views/site/index.php index bc69d76..b950ac7 100644 --- a/frontend/views/site/index.php +++ b/frontend/views/site/index.php @@ -27,7 +27,9 @@ $this->registerJs($js, View::POS_END); slides as $slide){ - $slideItems[] = $slide->lang->image->getImg(); + if(isset($slide->lang->image)){ + $slideItems[] = $slide->lang->image->getImg(); + } } echo \yii\bootstrap\Carousel::widget( [ diff --git a/frontend/views/site/objects.php b/frontend/views/site/objects.php index 09110dd..aa2ecf4 100644 --- a/frontend/views/site/objects.php +++ b/frontend/views/site/objects.php @@ -1,21 +1,24 @@ title = \Yii::t('app', 'menu-objects'); -$this->params[ 'breadcrumbs' ][] = $this->title; + + /** + * @var View $this + * @var Feedback $contact + * @var Objectkb[] $objects + */ + + use artbox\core\models\Feedback; + use common\models\Settings; + use frontend\assets\MapAsset; + use yii\helpers\Html; + use yii\bootstrap\ActiveForm; + use yii\web\View; + use common\models\Objectkb; + use yii\helpers\Url; + + $settings = Settings::getInstance(); + + $this->title = \Yii::t('app', 'menu-objects'); + $this->params[ 'breadcrumbs' ][] = $this->title; ?>
@@ -32,43 +35,52 @@ $this->params[ 'breadcrumbs' ][] = $this->title;

Туристическое агентство “WhereAreYou” осуществляет нестандартные поездки с 2003 года. Мы занимаемся не просто путешествием, а для каждого лично составляем полноценный план поездки: что лучше посетить, длительность пребывания исходя из ваших средств. Все что требуется от вас — назвать город, страну и бюджет.

- +
- +
- -
-- libgit2 0.21.4