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,23 +77,24 @@ class ObjectkbController extends Controller
77 $sliders = $this->allSliders; 77 $sliders = $this->allSliders;
78 $model->generateLangs(); 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,9 +107,11 @@ class ObjectkbController extends Controller
106 { 107 {
107 $model = $this->findModel($id); 108 $model = $this->findModel($id);
108 $model->generateLangs(); 109 $model->generateLangs();
109 - 110 +
110 if ($model->loadWithLangs(\Yii::$app->request)) { 111 if ($model->loadWithLangs(\Yii::$app->request)) {
  112 +
111 if ($model->saveWithLangs()) { 113 if ($model->saveWithLangs()) {
  114 +
112 return $this->redirect( 115 return $this->redirect(
113 [ 116 [
114 'view', 117 'view',
backend/views/objectkb/_form.php
@@ -26,6 +26,8 @@ @@ -26,6 +26,8 @@
26 $form = ActiveForm::begin(); 26 $form = ActiveForm::begin();
27 ?> 27 ?>
28 28
  29 + <p>Выбери слайдер по его названию из списка (слайдер уже должен существовать)</p>
  30 +
29 <?= $form->field($model, 'slider_id') 31 <?= $form->field($model, 'slider_id')
30 ->dropDownList( 32 ->dropDownList(
31 $items, 33 $items,
backend/views/objectkb/_form_language.php
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 use dosamigos\tinymce\TinyMce; 4 use dosamigos\tinymce\TinyMce;
5 use yii\web\View; 5 use yii\web\View;
6 use yii\widgets\ActiveForm; 6 use yii\widgets\ActiveForm;
  7 + use artbox\core\helpers\SlugifyDecorator;
7 8
8 /** 9 /**
9 * @var \artbox\core\models\SlideLang $model_lang 10 * @var \artbox\core\models\SlideLang $model_lang
@@ -11,26 +12,34 @@ @@ -11,26 +12,34 @@
11 * @var ActiveForm $form 12 * @var ActiveForm $form
12 * @var View $this 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 ->textInput([ 'maxlength' => true ]); 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 ->textInput([ 'maxlength' => true ]); 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 ->textInput([ 'maxlength' => true ]); 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 \ No newline at end of file 46 \ No newline at end of file
common/models/Objectkb.php
@@ -103,7 +103,6 @@ @@ -103,7 +103,6 @@
103 */ 103 */
104 public function getSlider() 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 \ No newline at end of file 109 \ No newline at end of file
common/models/ObjectkbLang.php
@@ -31,18 +31,15 @@ @@ -31,18 +31,15 @@
31 { 31 {
32 return [ 32 return [
33 'slug' => [ 33 'slug' => [
34 - 'class' => SlugBehavior::className(),  
35 - 'action' => 'objectkb/view',  
36 - 'params' => [ 34 + 'class' => SlugBehavior::className(),
  35 + 'action' => 'object/view',
  36 + 'params' => [
37 'id' => 'object_id', 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,13 +96,6 @@
99 'targetClass' => Language::className(), 96 'targetClass' => Language::className(),
100 'targetAttribute' => [ 'language_id' => 'id' ], 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,7 +108,8 @@
118 return [ 108 return [
119 'object_id' => Yii::t('core', 'Object ID'), 109 'object_id' => Yii::t('core', 'Object ID'),
120 'language_id' => Yii::t('core', 'Language ID'), 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 'upper_text' => Yii::t('core', 'Upper Text'), 113 'upper_text' => Yii::t('core', 'Upper Text'),
123 'about_object_text' => Yii::t('core', 'About object text'), 114 'about_object_text' => Yii::t('core', 'About object text'),
124 'object_name' => Yii::t('core', 'Object name'), 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,6 +49,12 @@ return [
49 'rules' => [ 49 'rules' => [
50 '\/robots.txt' => 'site/robots', 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 'params' => $params, 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 \ No newline at end of file 52 \ No newline at end of file
frontend/controllers/SiteController.php
@@ -10,6 +10,7 @@ @@ -10,6 +10,7 @@
10 use yii\web\BadRequestHttpException; 10 use yii\web\BadRequestHttpException;
11 use yii\web\Controller; 11 use yii\web\Controller;
12 use yii\web\Response; 12 use yii\web\Response;
  13 + use common\models\Objectkb;
13 14
14 /** 15 /**
15 * Site controller 16 * Site controller
@@ -101,7 +102,19 @@ @@ -101,7 +102,19 @@
101 102
102 public function actionObjects() 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 public function actionGreen() 120 public function actionGreen()
frontend/views/layouts/main.php
@@ -444,31 +444,7 @@ _________________________________________________________ --&gt; @@ -444,31 +444,7 @@ _________________________________________________________ --&gt;
444 444
445 <!-- *** FeedBack MODAL END *** --> 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 <?= $content ?> 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,7 +27,9 @@ $this-&gt;registerJs($js, View::POS_END);
27 <?php 27 <?php
28 $slideItems = []; 28 $slideItems = [];
29 foreach ($slider->slides as $slide){ 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 echo \yii\bootstrap\Carousel::widget( 34 echo \yii\bootstrap\Carousel::widget(
33 [ 35 [
frontend/views/site/objects.php
1 <?php 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 <div id="objects-wr"> 24 <div id="objects-wr">
@@ -32,43 +35,52 @@ $this-&gt;params[ &#39;breadcrumbs&#39; ][] = $this-&gt;title; @@ -32,43 +35,52 @@ $this-&gt;params[ &#39;breadcrumbs&#39; ][] = $this-&gt;title;
32 <p class="lead">Туристическое агентство “WhereAreYou” осуществляет нестандартные поездки с 2003 года. Мы занимаемся не просто путешествием, а для каждого лично составляем полноценный план поездки: что лучше посетить, длительность пребывания исходя из ваших средств. Все что требуется от вас — назвать город, страну и бюджет.</p> 35 <p class="lead">Туристическое агентство “WhereAreYou” осуществляет нестандартные поездки с 2003 года. Мы занимаемся не просто путешествием, а для каждого лично составляем полноценный план поездки: что лучше посетить, длительность пребывания исходя из ваших средств. Все что требуется от вас — назвать город, страну и бюджет.</p>
33 </div> 36 </div>
34 </div> 37 </div>
35 - 38 +
36 <div class="row portfolio"> 39 <div class="row portfolio">
37 <?php 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 foreach ($objects as $object) { 42 foreach ($objects as $object) {
49 - $link = 'img/objects/' . $object;  
50 - if (file_exists($link)) { 43 +
51 ?> 44 ?>
52 - 45 +
53 <div class="col-sm-6"> 46 <div class="col-sm-6">
54 <div class="box-image"> 47 <div class="box-image">
55 <div class="image"> 48 <div class="image">
56 - <img src="/<?= $link ?>" alt="" class="img-responsive"> 49 + <?= $object->image->getImg([]) ?>
57 </div> 50 </div>
58 <div class="bg"></div> 51 <div class="bg"></div>
59 <div class="name"> 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 </div> 64 </div>
62 <div class="text"> 65 <div class="text">
63 <p class="buttons"> 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 </p> 78 </p>
66 </div> 79 </div>
67 </div> 80 </div>
68 </div> 81 </div>
69 -  
70 - <?php  
71 - } 82 +
  83 + <?php
72 } 84 }
73 ?> 85 ?>
74 </div> 86 </div>