Commit 2f69a4814005cddd7f16184b5e3a24609dc5f896

Authored by Yarik
1 parent 7cf7c94e

i18n config fix

backend/config/main.php
@@ -172,7 +172,17 @@ return [ @@ -172,7 +172,17 @@ return [
172 'seo-dynamic/<action>/<seo_category_id:[A-Za-z0-9_-]+>/<id:[A-Za-z0-9_-]+>' => 'seo-dynamic/<action>', 172 'seo-dynamic/<action>/<seo_category_id:[A-Za-z0-9_-]+>/<id:[A-Za-z0-9_-]+>' => 'seo-dynamic/<action>',
173 'seo-dynamic/<action>/<seo_category_id:[A-Za-z0-9_-]+>' => 'seo-dynamic/<action>', 173 'seo-dynamic/<action>/<seo_category_id:[A-Za-z0-9_-]+>' => 'seo-dynamic/<action>',
174 ] 174 ]
175 - ] 175 + ],
  176 + 'urlManagerFrontend' => [
  177 + 'baseUrl' => '/',
  178 + 'enablePrettyUrl' => true,
  179 + 'showScriptName' => false,
  180 + 'class'=>'common\modules\language\components\LanguageUrlManager',
  181 + 'rules' => [
  182 + '/' => 'site/index',
  183 + '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  184 + ],
  185 + ],
176 186
177 ], 187 ],
178 'params' => $params, 188 'params' => $params,
backend/controllers/SliderController.php
@@ -6,6 +6,7 @@ use common\models\TemplateLocation; @@ -6,6 +6,7 @@ use common\models\TemplateLocation;
6 use Yii; 6 use Yii;
7 use common\models\Slider; 7 use common\models\Slider;
8 use common\models\SliderSearch; 8 use common\models\SliderSearch;
  9 +use yii\db\ActiveQuery;
9 use yii\helpers\ArrayHelper; 10 use yii\helpers\ArrayHelper;
10 use yii\web\Controller; 11 use yii\web\Controller;
11 use yii\web\NotFoundHttpException; 12 use yii\web\NotFoundHttpException;
@@ -51,6 +52,11 @@ class SliderController extends Controller @@ -51,6 +52,11 @@ class SliderController extends Controller
51 { 52 {
52 $searchModel = new SliderSearch(); 53 $searchModel = new SliderSearch();
53 $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 54 $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  55 + /**
  56 + * @var ActiveQuery $query
  57 + */
  58 + $query = $dataProvider->query;
  59 + $query->with('sliderImage');
54 60
55 return $this->render('index', [ 61 return $this->render('index', [
56 'searchModel' => $searchModel, 62 'searchModel' => $searchModel,
@@ -59,18 +65,6 @@ class SliderController extends Controller @@ -59,18 +65,6 @@ class SliderController extends Controller
59 } 65 }
60 66
61 /** 67 /**
62 - * Displays a single Slider model.  
63 - * @param integer $id  
64 - * @return mixed  
65 - */  
66 - public function actionView($id)  
67 - {  
68 - return $this->render('view', [  
69 - 'model' => $this->findModel($id),  
70 - ]);  
71 - }  
72 -  
73 - /**  
74 * Creates a new Slider model. 68 * Creates a new Slider model.
75 * If creation is successful, the browser will be redirected to the 'view' page. 69 * If creation is successful, the browser will be redirected to the 'view' page.
76 * @return mixed 70 * @return mixed
backend/controllers/SliderImageController.php
@@ -96,20 +96,13 @@ @@ -96,20 +96,13 @@
96 if($model->load(Yii::$app->request->post())) { 96 if($model->load(Yii::$app->request->post())) {
97 $model->loadLangs(\Yii::$app->request, $model_langs); 97 $model->loadLangs(\Yii::$app->request, $model_langs);
98 $model->slider_id = $slider_id; 98 $model->slider_id = $slider_id;
99 - if($model->save()) {  
100 - if($model->linkLangs($model_langs) && $model->saveLangs($model_langs)) {  
101 - return $this->redirect([  
102 - 'view',  
103 - 'slider_id' => $slider_id,  
104 - 'id' => $model->slider_image_id,  
105 - ]);  
106 - } else {  
107 - return $this->redirect([  
108 - 'update',  
109 - 'slider_id' => $slider_id,  
110 - 'id' => $model->slider_image_id,  
111 - ]);  
112 - } 99 + $model->model_langs = $model_langs;
  100 + if($model->save() && $model->transactionStatus) {
  101 + return $this->redirect([
  102 + 'view',
  103 + 'slider_id' => $slider_id,
  104 + 'id' => $model->slider_image_id,
  105 + ]);
113 } 106 }
114 } 107 }
115 $slider = Slider::findOne($slider_id); 108 $slider = Slider::findOne($slider_id);
@@ -136,7 +129,8 @@ @@ -136,7 +129,8 @@
136 $model_langs = $model->generateLangs(); 129 $model_langs = $model->generateLangs();
137 if($model->load(Yii::$app->request->post())) { 130 if($model->load(Yii::$app->request->post())) {
138 $model->loadLangs(\Yii::$app->request, $model_langs); 131 $model->loadLangs(\Yii::$app->request, $model_langs);
139 - if($model->save() && $model->linkLangs($model_langs) && $model->saveLangs($model_langs)) { 132 + $model->model_langs = $model_langs;
  133 + if($model->save() && $model->transactionStatus) {
140 return $this->redirect([ 134 return $this->redirect([
141 'view', 135 'view',
142 'slider_id' => $slider_id, 136 'slider_id' => $slider_id,
backend/views/banner/index.php
1 <?php 1 <?php
2 2
  3 + use common\models\Banner;
3 use yii\helpers\Html; 4 use yii\helpers\Html;
4 use yii\grid\GridView; 5 use yii\grid\GridView;
5 6
6 - /* @var $this yii\web\View */  
7 - /* @var $searchModel common\models\BannerSearch */  
8 - /* @var $dataProvider yii\data\ActiveDataProvider */  
9 - 7 + /**
  8 + * @var yii\web\View $this
  9 + * @var common\models\BannerSearch $searchModel
  10 + * @var yii\data\ActiveDataProvider $dataProvider
  11 + */
10 $this->title = Yii::t('app', 'Banners'); 12 $this->title = Yii::t('app', 'Banners');
11 $this->params[ 'breadcrumbs' ][] = $this->title; 13 $this->params[ 'breadcrumbs' ][] = $this->title;
12 ?> 14 ?>
13 <div class="banner-index"> 15 <div class="banner-index">
14 16
15 <h1><?= Html::encode($this->title) ?></h1> 17 <h1><?= Html::encode($this->title) ?></h1>
16 - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>  
17 18
18 <p> 19 <p>
19 <?= Html::a(Yii::t('app', 'Create Banner'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?> 20 <?= Html::a(Yii::t('app', 'Create Banner'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>
@@ -22,10 +23,34 @@ @@ -22,10 +23,34 @@
22 'dataProvider' => $dataProvider, 23 'dataProvider' => $dataProvider,
23 'filterModel' => $searchModel, 24 'filterModel' => $searchModel,
24 'columns' => [ 25 'columns' => [
25 - [ 'class' => 'yii\grid\SerialColumn' ],  
26 'banner_id', 26 'banner_id',
27 - 'url',  
28 - 'status', 27 + [
  28 + 'attribute' => 'url',
  29 + 'content' => function($model) {
  30 + /**
  31 + * @var Banner $model
  32 + */
  33 + return Html::a($model->url, \Yii::$app->urlManagerFrontend->createUrl($model->url));
  34 + },
  35 + ],
  36 + [
  37 + 'attribute' => 'title',
  38 + 'value' => 'lang.title',
  39 + ],
  40 + 'lang.imageUrl:image',
  41 + [
  42 + 'attribute' => 'status',
  43 + 'value' => function($model) {
  44 + /**
  45 + * @var Banner $model
  46 + */
  47 + return ( !$model->status ) ? \Yii::t('app', 'Скрыто') : \Yii::t('app', 'Показать');
  48 + },
  49 + 'filter' => [
  50 + 0 => \Yii::t('app', 'Скрыто'),
  51 + 1 => \Yii::t('app', 'Показать'),
  52 + ],
  53 + ],
29 [ 'class' => 'yii\grid\ActionColumn' ], 54 [ 'class' => 'yii\grid\ActionColumn' ],
30 ], 55 ],
31 ]); ?> 56 ]); ?>
backend/views/banner/view.php
@@ -3,10 +3,11 @@ @@ -3,10 +3,11 @@
3 use yii\helpers\Html; 3 use yii\helpers\Html;
4 use yii\widgets\DetailView; 4 use yii\widgets\DetailView;
5 5
6 - /* @var $this yii\web\View */  
7 - /* @var $model common\models\Banner */  
8 -  
9 - $this->title = $model->banner_id; 6 + /**
  7 + * @var yii\web\View $this
  8 + * @var common\models\Banner $model
  9 + */
  10 + $this->title = $model->lang->title;
10 $this->params[ 'breadcrumbs' ][] = [ 11 $this->params[ 'breadcrumbs' ][] = [
11 'label' => Yii::t('app', 'Banners'), 12 'label' => Yii::t('app', 'Banners'),
12 'url' => [ 'index' ], 13 'url' => [ 'index' ],
@@ -35,11 +36,20 @@ @@ -35,11 +36,20 @@
35 </p> 36 </p>
36 37
37 <?= DetailView::widget([ 38 <?= DetailView::widget([
38 - 'model' => $model, 39 + 'model' => $model,
39 'attributes' => [ 40 'attributes' => [
40 'banner_id', 41 'banner_id',
41 - 'url',  
42 - 'status', 42 + [
  43 + 'attribute' => 'url',
  44 + 'value' => Html::a($model->url, \Yii::$app->urlManagerFrontend->createUrl($model->url)),
  45 + 'format' => 'html',
  46 + ],
  47 + 'lang.title',
  48 + 'lang.imageUrl:image',
  49 + [
  50 + 'attribute' => 'status',
  51 + 'value' => $model->status ? \Yii::t('app', 'Показать') : \Yii::t('app', 'Скрыть'),
  52 + ],
43 ], 53 ],
44 ]) ?> 54 ]) ?>
45 55
backend/views/slider-image/create.php
@@ -12,10 +12,17 @@ @@ -12,10 +12,17 @@
12 * @var SliderImage $model 12 * @var SliderImage $model
13 * @var SliderImageLang[] $model_langs 13 * @var SliderImageLang[] $model_langs
14 * @var Slider $slider 14 * @var Slider $slider
  15 + * @var int $slider_id
15 */ 16 */
16 17
17 $this->title = Yii::t('app', 'Create Slider Image'); 18 $this->title = Yii::t('app', 'Create Slider Image');
18 $this->params[ 'breadcrumbs' ][] = [ 19 $this->params[ 'breadcrumbs' ][] = [
  20 + 'label' => Yii::t('app', 'Sliders'),
  21 + 'url' => Url::toRoute([
  22 + 'slider/index',
  23 + ]),
  24 + ];
  25 + $this->params[ 'breadcrumbs' ][] = [
19 'label' => Yii::t('app', 'Slider Images'), 26 'label' => Yii::t('app', 'Slider Images'),
20 'url' => Url::toRoute([ 27 'url' => Url::toRoute([
21 'index', 28 'index',
backend/views/slider-image/index.php
1 <?php 1 <?php
2 -  
3 -use yii\helpers\Html;  
4 -use yii\grid\GridView;  
5 -use yii\helpers\Url;  
6 -  
7 -/* @var $this yii\web\View */  
8 -/* @var $searchModel common\models\SliderImageSearch */  
9 -/* @var $dataProvider yii\data\ActiveDataProvider */  
10 -  
11 -$this->title = Yii::t('app', 'Slider Images');  
12 -$this->params['breadcrumbs'][] = $this->title; 2 +
  3 + use common\models\SliderImage;
  4 + use yii\helpers\Html;
  5 + use yii\grid\GridView;
  6 + use yii\helpers\Url;
  7 +
  8 + /**
  9 + * @var yii\web\View $this
  10 + * @var common\models\SliderImageSearch $searchModel
  11 + * @var yii\data\ActiveDataProvider $dataProvider
  12 + * @var int $slider_id
  13 + */
  14 + $this->title = Yii::t('app', 'Slider Images');
  15 + $this->params[ 'breadcrumbs' ][] = [
  16 + 'label' => Yii::t('app', 'Sliders'),
  17 + 'url' => Url::toRoute([ 'slider/index' ]),
  18 + ];
  19 + $this->params[ 'breadcrumbs' ][] = $this->title;
13 ?> 20 ?>
14 <div class="slider-image-index"> 21 <div class="slider-image-index">
15 - 22 +
16 <h1><?= Html::encode($this->title) ?></h1> 23 <h1><?= Html::encode($this->title) ?></h1>
17 - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>  
18 - 24 +
19 <p> 25 <p>
20 - <?= Html::a(Yii::t('app', 'Create Slider Image'), Url::toRoute(['create','slider_id'=>$slider_id]), ['class' => 'btn btn-success']) ?> 26 + <?= Html::a(Yii::t('app', 'Create Slider Image'), Url::toRoute([
  27 + 'create',
  28 + 'slider_id' => $slider_id,
  29 + ]), [ 'class' => 'btn btn-success' ]) ?>
21 </p> 30 </p>
22 <?= GridView::widget([ 31 <?= GridView::widget([
23 'dataProvider' => $dataProvider, 32 'dataProvider' => $dataProvider,
24 - 'filterModel' => $searchModel,  
25 - 'columns' => [  
26 - ['class' => 'yii\grid\SerialColumn'],  
27 - 33 + 'filterModel' => $searchModel,
  34 + 'columns' => [
28 'slider_image_id', 35 'slider_image_id',
29 - 'slider_id',  
30 'imageUrl:image', 36 'imageUrl:image',
31 - 'url',  
32 - 'status', 37 + 'url',
33 [ 38 [
34 - 'class' => 'yii\grid\ActionColumn',  
35 - 'buttons' => [  
36 - 'view' => function ($url, $model)  
37 - {  
38 - return Html::a (  
39 - '<span class="glyphicon glyphicon-eye-open"></span>',  
40 - Url::toRoute(['view','slider_id'=> $model->slider_id, 'id' => $model->slider_image_id]),  
41 - [  
42 - 'title' => "Просмотр",  
43 - ]  
44 - ); 39 + 'attribute' => 'status',
  40 + 'value' => function($model) {
  41 + /**
  42 + * @var SliderImage $model
  43 + */
  44 + return ( !$model->status ) ? \Yii::t('app', 'Скрыто') : \Yii::t('app', 'Показать');
  45 + },
  46 + 'filter' => [
  47 + 0 => \Yii::t('app', 'Скрыто'),
  48 + 1 => \Yii::t('app', 'Показать'),
  49 + ],
  50 + ],
  51 + [
  52 + 'class' => 'yii\grid\ActionColumn',
  53 + 'buttons' => [
  54 + 'view' => function($url, $model) {
  55 + return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', Url::toRoute([
  56 + 'view',
  57 + 'slider_id' => $model->slider_id,
  58 + 'id' => $model->slider_image_id,
  59 + ]), [
  60 + 'title' => \Yii::t('app', 'Просмотр'),
  61 + ]);
45 }, 62 },
46 - 'update' => function ($url, $model)  
47 - {  
48 - return Html::a (  
49 - '<span class="glyphicon glyphicon-pencil"></span>',  
50 - Url::toRoute(['update','slider_id'=> $model->slider_id, 'id' => $model->slider_image_id]),  
51 - [  
52 - 'title' => "Редактировать",  
53 - ]  
54 - ); 63 + 'update' => function($url, $model) {
  64 + return Html::a('<span class="glyphicon glyphicon-pencil"></span>', Url::toRoute([
  65 + 'update',
  66 + 'slider_id' => $model->slider_id,
  67 + 'id' => $model->slider_image_id,
  68 + ]), [
  69 + 'title' => \Yii::t('app', 'Редактировать'),
  70 + ]);
55 }, 71 },
56 - 'delete' => function ($url, $model)  
57 - {  
58 -  
59 - return Html::a('<span class="glyphicon glyphicon-trash"></span>', Url::toRoute(['delete','slider_id'=> $model->slider_id, 'id' => $model->slider_image_id]), [  
60 - 'title' => Yii::t('yii', 'Delete'), 72 + 'delete' => function($url, $model) {
  73 + return Html::a('<span class="glyphicon glyphicon-trash"></span>', Url::toRoute([
  74 + 'delete',
  75 + 'slider_id' => $model->slider_id,
  76 + 'id' => $model->slider_image_id,
  77 + ]), [
  78 + 'title' => Yii::t('yii', 'Delete'),
61 'data-confirm' => Yii::t('yii', 'Are you sure to delete this item?'), 79 'data-confirm' => Yii::t('yii', 'Are you sure to delete this item?'),
62 - 'data-method' => 'post', 80 + 'data-method' => 'post',
63 ]); 81 ]);
64 - 82 +
65 }, 83 },
66 ], 84 ],
67 ], 85 ],
backend/views/slider-image/update.php
@@ -17,7 +17,13 @@ @@ -17,7 +17,13 @@
17 17
18 $this->title = Yii::t('app', 'Update {modelClass}: ', [ 18 $this->title = Yii::t('app', 'Update {modelClass}: ', [
19 'modelClass' => 'Slider Image', 19 'modelClass' => 'Slider Image',
20 - ]) . $model->title; 20 + ]) . $model->slider_image_id;
  21 + $this->params[ 'breadcrumbs' ][] = [
  22 + 'label' => Yii::t('app', 'Sliders'),
  23 + 'url' => Url::toRoute([
  24 + 'slider/index',
  25 + ]),
  26 + ];
21 $this->params[ 'breadcrumbs' ][] = [ 27 $this->params[ 'breadcrumbs' ][] = [
22 'label' => Yii::t('app', 'Slider Images'), 28 'label' => Yii::t('app', 'Slider Images'),
23 'url' => Url::toRoute([ 29 'url' => Url::toRoute([
@@ -26,7 +32,7 @@ @@ -26,7 +32,7 @@
26 ]), 32 ]),
27 ]; 33 ];
28 $this->params[ 'breadcrumbs' ][] = [ 34 $this->params[ 'breadcrumbs' ][] = [
29 - 'label' => $model->title, 35 + 'label' => \Yii::t('app', 'Slide').': '.$model->slider_image_id,
30 'url' => Url::toRoute([ 36 'url' => Url::toRoute([
31 'view', 37 'view',
32 'slider_id' => $slider_id, 38 'slider_id' => $slider_id,
backend/views/slider-image/view.php
1 <?php 1 <?php
2 -  
3 -use yii\helpers\Html;  
4 -use yii\helpers\Url;  
5 -use yii\widgets\DetailView;  
6 -  
7 -/* @var $this yii\web\View */  
8 -/* @var $model common\models\SliderImage */  
9 -  
10 -$this->title = $model->title;  
11 -$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Slider Images'), 'url' => Url::toRoute(['index','slider_id'=>$slider_id])];  
12 -$this->params['breadcrumbs'][] = $this->title; 2 +
  3 + use yii\helpers\Html;
  4 + use yii\helpers\Url;
  5 + use yii\widgets\DetailView;
  6 +
  7 + /**
  8 + * @var yii\web\View $this
  9 + * @var common\models\SliderImage $model
  10 + * @var int $slider_id
  11 + */
  12 + $this->title = \Yii::t('app', 'Slide') . ': ' . $model->slider_image_id;
  13 + $this->params[ 'breadcrumbs' ][] = [
  14 + 'label' => Yii::t('app', 'Sliders'),
  15 + 'url' => Url::toRoute([
  16 + 'slider/index',
  17 + ]),
  18 + ];
  19 + $this->params[ 'breadcrumbs' ][] = [
  20 + 'label' => Yii::t('app', 'Slider Images'),
  21 + 'url' => Url::toRoute([
  22 + 'index',
  23 + 'slider_id' => $slider_id,
  24 + ]),
  25 + ];
  26 + $this->params[ 'breadcrumbs' ][] = $this->title;
13 ?> 27 ?>
14 <div class="slider-image-view"> 28 <div class="slider-image-view">
15 - 29 +
16 <h1><?= Html::encode($this->title) ?></h1> 30 <h1><?= Html::encode($this->title) ?></h1>
17 - 31 +
18 <p> 32 <p>
19 - <?= Html::a(Yii::t('app', 'Update'), ['update', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id], ['class' => 'btn btn-primary']) ?>  
20 - <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'slider_id'=>$slider_id , 'id' => $model->slider_image_id], [ 33 + <?= Html::a(Yii::t('app', 'Update'), [
  34 + 'update',
  35 + 'slider_id' => $slider_id,
  36 + 'id' => $model->slider_image_id,
  37 + ], [ 'class' => 'btn btn-primary' ]) ?>
  38 + <?= Html::a(Yii::t('app', 'Delete'), [
  39 + 'delete',
  40 + 'slider_id' => $slider_id,
  41 + 'id' => $model->slider_image_id,
  42 + ], [
21 'class' => 'btn btn-danger', 43 'class' => 'btn btn-danger',
22 - 'data' => [ 44 + 'data' => [
23 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'), 45 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'),
24 - 'method' => 'post', 46 + 'method' => 'post',
25 ], 47 ],
26 ]) ?> 48 ]) ?>
27 </p> 49 </p>
28 - 50 +
29 <?= DetailView::widget([ 51 <?= DetailView::widget([
30 - 'model' => $model, 52 + 'model' => $model,
31 'attributes' => [ 53 'attributes' => [
32 'slider_image_id', 54 'slider_image_id',
33 - 'slider_id', 55 + [
  56 + 'attribute' => 'slider_id',
  57 + 'format' => 'html',
  58 + 'value' => Html::a($model->slider->title, [
  59 + 'slider/update',
  60 + 'id' => $model->slider_id,
  61 + ]),
  62 + ],
  63 + 'lang.title',
34 'imageUrl:image', 64 'imageUrl:image',
35 - 'url',  
36 - 'status', 65 + 'url:url',
  66 + [
  67 + 'attribute' => 'status',
  68 + 'value' => $model->status?\Yii::t('app', 'Показать'):\Yii::t('app', 'Скрыть'),
  69 + ],
37 'sort', 70 'sort',
38 ], 71 ],
39 ]) ?> 72 ]) ?>
backend/views/slider/create.php
1 <?php 1 <?php
2 -  
3 -use yii\helpers\Html;  
4 -  
5 -  
6 -/* @var $this yii\web\View */  
7 -/* @var $model common\models\Slider */  
8 -  
9 -$this->title = Yii::t('app', 'Create Slider');  
10 -$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Sliders'), 'url' => ['index']];  
11 -$this->params['breadcrumbs'][] = $this->title; 2 +
  3 + use yii\helpers\Html;
  4 +
  5 + /**
  6 + * @var yii\web\View $this
  7 + * @var common\models\Slider $model
  8 + */
  9 + $this->title = Yii::t('app', 'Create Slider');
  10 + $this->params[ 'breadcrumbs' ][] = [
  11 + 'label' => Yii::t('app', 'Sliders'),
  12 + 'url' => [ 'index' ],
  13 + ];
  14 + $this->params[ 'breadcrumbs' ][] = $this->title;
12 ?> 15 ?>
13 <div class="slider-create"> 16 <div class="slider-create">
14 - 17 +
15 <h1><?= Html::encode($this->title) ?></h1> 18 <h1><?= Html::encode($this->title) ?></h1>
16 - 19 +
17 <?= $this->render('_form', [ 20 <?= $this->render('_form', [
18 'model' => $model, 21 'model' => $model,
19 ]) ?> 22 ]) ?>
backend/views/slider/index.php
1 <?php 1 <?php
2 -  
3 -use yii\helpers\Html;  
4 -use yii\grid\GridView;  
5 -use yii\helpers\Url;  
6 -  
7 -/* @var $this yii\web\View */  
8 -/* @var $searchModel common\models\SliderSearch */  
9 -/* @var $dataProvider yii\data\ActiveDataProvider */  
10 -  
11 -$this->title = Yii::t('app', 'Sliders');  
12 -$this->params['breadcrumbs'][] = $this->title; 2 +
  3 + use common\models\Slider;
  4 + use yii\helpers\Html;
  5 + use yii\grid\GridView;
  6 + use yii\helpers\Url;
  7 +
  8 + /**
  9 + * @var yii\web\View $this
  10 + * @var common\models\SliderSearch $searchModel
  11 + * @var yii\data\ActiveDataProvider $dataProvider
  12 + */
  13 + $this->title = Yii::t('app', 'Sliders');
  14 + $this->params[ 'breadcrumbs' ][] = $this->title;
13 ?> 15 ?>
14 <div class="slider-index"> 16 <div class="slider-index">
15 - 17 +
16 <h1><?= Html::encode($this->title) ?></h1> 18 <h1><?= Html::encode($this->title) ?></h1>
17 - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>  
18 - 19 +
19 <p> 20 <p>
20 - <?= Html::a(Yii::t('app', 'Create Slider'), ['create'], ['class' => 'btn btn-success']) ?> 21 + <?= Html::a(Yii::t('app', 'Create Slider'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>
21 </p> 22 </p>
22 <?= GridView::widget([ 23 <?= GridView::widget([
23 'dataProvider' => $dataProvider, 24 'dataProvider' => $dataProvider,
24 - 'filterModel' => $searchModel, 25 + 'filterModel' => $searchModel,
25 'columns' => [ 26 'columns' => [
  27 + 'slider_id',
  28 + 'title',
26 [ 29 [
27 - 'attribute' => 'slider_id',  
28 - 'value' => 'slider_id',  
29 - 'contentOptions' => ['style' => 'width: 70px;'],  
30 - ],  
31 - [  
32 - 'attribute' => 'title',  
33 - 'value' => 'title', 30 + 'attribute' => 'status',
  31 + 'value' => function($model) {
  32 + /**
  33 + * @var Slider $model
  34 + */
  35 + return ( !$model->status ) ? \Yii::t('app', 'Скрыто') : \Yii::t('app', 'Показать');
  36 + },
  37 + 'filter' => [
  38 + 0 => \Yii::t('app', 'Скрыто'),
  39 + 1 => \Yii::t('app', 'Показать'),
  40 + ],
34 ], 41 ],
35 -  
36 [ 42 [
37 - 'attribute' => 'status',  
38 - 'value' => function ($model)  
39 - {  
40 - return ($model->status == 0) ? 'Скрыто' : 'Показать'; 43 + 'label' => \Yii::t('app', 'Slide count'),
  44 + 'content' => function($model) {
  45 + /**
  46 + * @var Slider $model
  47 + */
  48 + return count($model->sliderImage);
41 }, 49 },
42 ], 50 ],
43 [ 51 [
44 'class' => 'yii\grid\ActionColumn', 52 'class' => 'yii\grid\ActionColumn',
45 'template' => '{update}&nbsp;{image}&nbsp;{delete}', 53 'template' => '{update}&nbsp;{image}&nbsp;{delete}',
46 'buttons' => [ 54 'buttons' => [
47 - 'update' => function ($url, $model)  
48 - {  
49 - return Html::a (  
50 - '<span class="glyphicon glyphicon-pencil"></span>',  
51 - Url::toRoute(['slider/update', 'id' => $model->slider_id]),  
52 - [  
53 - 'title' => "Редактировать",  
54 - ]  
55 - );  
56 - },  
57 - 'image' => function ($url, $model)  
58 - {  
59 - return Html::a (  
60 - '<span class="glyphicon glyphicon-picture"></span>',  
61 - Url::toRoute(['slider-image/index', 'slider_id' => $model->slider_id]),  
62 - [  
63 - 'title' => "слайды",  
64 - ]  
65 - );  
66 - },  
67 - 'delete' => function ($url, $model)  
68 - {  
69 - return Html::a (  
70 - '<span class="glyphicon glyphicon-trash"></span>',  
71 - Url::toRoute(['slider/delete', 'id' => $model->slider_id]),  
72 - [  
73 - 'title' => "Удалить",  
74 - ]  
75 - ); 55 + 'image' => function($url, $model) {
  56 + return Html::a('<span class="glyphicon glyphicon-picture"></span>', Url::toRoute([
  57 + 'slider-image/index',
  58 + 'slider_id' => $model->slider_id,
  59 + ]), [
  60 + 'title' => \Yii::t('app', "слайды"),
  61 + ]);
76 }, 62 },
77 ], 63 ],
78 - 'contentOptions' => ['style' => 'width: 70px;'],  
79 ], 64 ],
80 ], 65 ],
81 ]); ?> 66 ]); ?>
backend/views/slider/update.php
1 <?php 1 <?php
2 -  
3 -use yii\helpers\Html;  
4 -  
5 -/* @var $this yii\web\View */  
6 -/* @var $model common\models\Slider */  
7 -  
8 -$this->title = Yii::t('app', 'Update {modelClass}: ', [  
9 - 'modelClass' => 'Slider',  
10 -]) . $model->title;  
11 -$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Sliders'), 'url' => ['index']];  
12 -$this->params['breadcrumbs'][] = ['label' => $model->title, 'url' => ['view', 'id' => $model->slider_id]];  
13 -$this->params['breadcrumbs'][] = Yii::t('app', 'Update'); 2 +
  3 + use yii\helpers\Html;
  4 +
  5 + /**
  6 + * @var yii\web\View $this
  7 + * @var common\models\Slider $model
  8 + */
  9 + $this->title = Yii::t('app', 'Update {modelClass}: ', [
  10 + 'modelClass' => 'Slider',
  11 + ]) . $model->title;
  12 + $this->params[ 'breadcrumbs' ][] = [
  13 + 'label' => Yii::t('app', 'Sliders'),
  14 + 'url' => [ 'index' ],
  15 + ];
  16 + $this->params[ 'breadcrumbs' ][] = Yii::t('app', 'Update');
14 ?> 17 ?>
15 <div class="slider-update"> 18 <div class="slider-update">
16 - 19 +
17 <h1><?= Html::encode($this->title) ?></h1> 20 <h1><?= Html::encode($this->title) ?></h1>
18 - 21 +
19 <?= $this->render('_form', [ 22 <?= $this->render('_form', [
20 'model' => $model, 23 'model' => $model,
21 ]) ?> 24 ]) ?>
backend/views/slider/view.php deleted
1 -<?php  
2 -  
3 -use yii\helpers\Html;  
4 -use yii\widgets\DetailView;  
5 -  
6 -/* @var $this yii\web\View */  
7 -/* @var $model common\models\Slider */  
8 -  
9 -$this->title = $model->title;  
10 -$this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Sliders'), 'url' => ['index']];  
11 -$this->params['breadcrumbs'][] = $this->title;  
12 -?>  
13 -<div class="slider-view">  
14 -  
15 - <h1><?= Html::encode($this->title) ?></h1>  
16 -  
17 - <p>  
18 - <?= Html::a(Yii::t('app', 'Update'), ['update', 'id' => $model->slider_id], ['class' => 'btn btn-primary']) ?>  
19 - <?= Html::a(Yii::t('app', 'Delete'), ['delete', 'id' => $model->slider_id], [  
20 - 'class' => 'btn btn-danger',  
21 - 'data' => [  
22 - 'confirm' => Yii::t('app', 'Are you sure you want to delete this item?'),  
23 - 'method' => 'post',  
24 - ],  
25 - ]) ?>  
26 - </p>  
27 -  
28 - <?= DetailView::widget([  
29 - 'model' => $model,  
30 - 'attributes' => [  
31 - 'slider_id',  
32 - 'speed',  
33 - 'duration',  
34 - 'title',  
35 - 'status',  
36 - ],  
37 - ]) ?>  
38 -  
39 -</div>  
common/models/BannerSearch.php
@@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
11 class BannerSearch extends Banner 11 class BannerSearch extends Banner
12 { 12 {
13 13
  14 + public $title;
  15 +
14 /** 16 /**
15 * @inheritdoc 17 * @inheritdoc
16 */ 18 */
@@ -25,7 +27,10 @@ @@ -25,7 +27,10 @@
25 'integer', 27 'integer',
26 ], 28 ],
27 [ 29 [
28 - [ 'url' ], 30 + [
  31 + 'url',
  32 + 'title',
  33 + ],
29 'safe', 34 'safe',
30 ], 35 ],
31 ]; 36 ];
@@ -54,12 +59,24 @@ @@ -54,12 +59,24 @@
54 */ 59 */
55 public function search($params) 60 public function search($params)
56 { 61 {
57 - $query = Banner::find(); 62 + $query = Banner::find()
  63 + ->joinWith('lang');
58 64
59 // add conditions that should always apply here 65 // add conditions that should always apply here
60 66
61 $dataProvider = new ActiveDataProvider([ 67 $dataProvider = new ActiveDataProvider([
62 'query' => $query, 68 'query' => $query,
  69 + 'sort' => [
  70 + 'attributes' => [
  71 + 'banner_id',
  72 + 'url',
  73 + 'status',
  74 + 'title' => [
  75 + 'asc' => [ 'banner_lang.title' => SORT_ASC ],
  76 + 'desc' => [ 'banner_lang.title' => SORT_DESC ],
  77 + ],
  78 + ],
  79 + ],
63 ]); 80 ]);
64 81
65 $this->load($params); 82 $this->load($params);
@@ -77,10 +94,15 @@ @@ -77,10 +94,15 @@
77 ]); 94 ]);
78 95
79 $query->andFilterWhere([ 96 $query->andFilterWhere([
80 - 'like',  
81 - 'url',  
82 - $this->url,  
83 - ]); 97 + 'like',
  98 + 'url',
  99 + $this->url,
  100 + ])
  101 + ->andFilterWhere([
  102 + 'like',
  103 + 'banner_lang.title',
  104 + $this->title,
  105 + ]);
84 106
85 return $dataProvider; 107 return $dataProvider;
86 } 108 }
common/models/Slider.php
@@ -35,7 +35,7 @@ class Slider extends \yii\db\ActiveRecord @@ -35,7 +35,7 @@ class Slider extends \yii\db\ActiveRecord
35 return [ 35 return [
36 [['speed', 'duration', 'status', 'width', 'height'], 'integer'], 36 [['speed', 'duration', 'status', 'width', 'height'], 'integer'],
37 [['title'], 'string', 'max' => 200], 37 [['title'], 'string', 'max' => 200],
38 - [['width', 'height'], 'required'], 38 + [['width', 'height', 'title'], 'required'],
39 ['title', 'unique', 'targetClass' => '\common\models\Slider', 'message' => Yii::t('app','message',[ 39 ['title', 'unique', 'targetClass' => '\common\models\Slider', 'message' => Yii::t('app','message',[
40 'field' => 'Title' 40 'field' => 'Title'
41 ])], 41 ])],
@@ -65,24 +65,5 @@ class Slider extends \yii\db\ActiveRecord @@ -65,24 +65,5 @@ class Slider extends \yii\db\ActiveRecord
65 { 65 {
66 return $this->hasMany(SliderImage::className(), ['slider_id' => 'slider_id'])->where([SliderImage::tableName().'.status'=>1]); 66 return $this->hasMany(SliderImage::className(), ['slider_id' => 'slider_id'])->where([SliderImage::tableName().'.status'=>1]);
67 } 67 }
68 -  
69 -  
70 - /**  
71 - * fetch stored image file name with complete path  
72 - * @return string  
73 - */  
74 - public function getImageFile()  
75 - {  
76 - return isset($this->image) ? '/storage/slider/' . $this->image : null;  
77 - }  
78 -  
79 - /**  
80 - * fetch stored image url  
81 - * @return string  
82 - */  
83 - public function getImageUrl()  
84 - {  
85 - // return a default image placeholder if your source image is not found  
86 - return isset($this->image) ? '/storage/slider/'. $this->image : '/storage/no_photo.png';  
87 - } 68 +
88 } 69 }
common/models/SliderImage.php
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 4
5 use common\behaviors\SaveImgBehavior; 5 use common\behaviors\SaveImgBehavior;
6 use common\modules\language\behaviors\LanguageBehavior; 6 use common\modules\language\behaviors\LanguageBehavior;
  7 + use common\modules\language\behaviors\TransactionBehavior;
7 use Yii; 8 use Yii;
8 use yii\db\ActiveQuery; 9 use yii\db\ActiveQuery;
9 use yii\db\ActiveRecord; 10 use yii\db\ActiveRecord;
@@ -35,6 +36,11 @@ @@ -35,6 +36,11 @@
35 * @method bool linkLangs( ActiveRecord[] $model_langs ) 36 * @method bool linkLangs( ActiveRecord[] $model_langs )
36 * @method bool saveLangs( ActiveRecord[] $model_langs ) 37 * @method bool saveLangs( ActiveRecord[] $model_langs )
37 * * End language behavior * 38 * * End language behavior *
  39 + * * From transaction behavior *
  40 + * @property SliderImageLang[] $model_langs
  41 + * @property bool $transactionStatus
  42 + * @method bool getTransactionStatus()
  43 + * * End transaction behavior *
38 */ 44 */
39 class SliderImage extends \yii\db\ActiveRecord 45 class SliderImage extends \yii\db\ActiveRecord
40 { 46 {
@@ -81,9 +87,12 @@ @@ -81,9 +87,12 @@
81 public function behaviors() 87 public function behaviors()
82 { 88 {
83 return [ 89 return [
84 - 'language' => [ 90 + 'language' => [
85 'class' => LanguageBehavior::className(), 91 'class' => LanguageBehavior::className(),
86 ], 92 ],
  93 + 'transaction' => [
  94 + 'class' => TransactionBehavior::className(),
  95 + ],
87 [ 96 [
88 'class' => SaveImgBehavior::className(), 97 'class' => SaveImgBehavior::className(),
89 'fields' => [ 98 'fields' => [
common/models/SliderSearch.php
@@ -2,10 +2,8 @@ @@ -2,10 +2,8 @@
2 2
3 namespace common\models; 3 namespace common\models;
4 4
5 -use Yii;  
6 use yii\base\Model; 5 use yii\base\Model;
7 use yii\data\ActiveDataProvider; 6 use yii\data\ActiveDataProvider;
8 -use common\models\Slider;  
9 7
10 /** 8 /**
11 * SliderSearch represents the model behind the search form about `common\models\Slider`. 9 * SliderSearch represents the model behind the search form about `common\models\Slider`.
@@ -19,8 +17,8 @@ class SliderSearch extends Slider @@ -19,8 +17,8 @@ class SliderSearch extends Slider
19 public function rules() 17 public function rules()
20 { 18 {
21 return [ 19 return [
22 - [['slider_id', 'speed', 'duration', 'status'], 'integer'],  
23 - [['title','location'], 'safe'], 20 + [['slider_id', 'status'], 'integer'],
  21 + [['title'], 'safe'],
24 ]; 22 ];
25 } 23 }
26 24
@@ -61,10 +59,7 @@ class SliderSearch extends Slider @@ -61,10 +59,7 @@ class SliderSearch extends Slider
61 // grid filtering conditions 59 // grid filtering conditions
62 $query->andFilterWhere([ 60 $query->andFilterWhere([
63 'slider_id' => $this->slider_id, 61 'slider_id' => $this->slider_id,
64 - 'speed' => $this->speed,  
65 - 'duration' => $this->duration,  
66 'status' => $this->status, 62 'status' => $this->status,
67 -  
68 ]); 63 ]);
69 64
70 $query->andFilterWhere(['like', 'title', $this->title]); 65 $query->andFilterWhere(['like', 'title', $this->title]);
common/modules/language/readme.txt
@@ -93,4 +93,4 @@ public function behaviors() { @@ -93,4 +93,4 @@ public function behaviors() {
93 2. При POST запросе загружаем данные в языковые модели {Table}->loadLangs(Request $request, {TableLangs[]} $model_langs) 93 2. При POST запросе загружаем данные в языковые модели {Table}->loadLangs(Request $request, {TableLangs[]} $model_langs)
94 3. Передаем в свойство model_langs модели {Table} массив {TableLang[]}: $model->model_langs = $model_langs 94 3. Передаем в свойство model_langs модели {Table} массив {TableLang[]}: $model->model_langs = $model_langs
95 4. После сохранения, если транзанкция успешна, то свойство {Table}->transactionStatus будет true, иначе возникла ошибка в какой то модели. 95 4. После сохранения, если транзанкция успешна, то свойство {Table}->transactionStatus будет true, иначе возникла ошибка в какой то модели.
96 -7. Получать данные на публичной части сайта через {Table}->lang.  
97 \ No newline at end of file 96 \ No newline at end of file
  97 +7. Получать данные на публичной части сайта через {Table}->lang.