Commit 2f69a4814005cddd7f16184b5e3a24609dc5f896

Authored by Yarik
1 parent 7cf7c94e

i18n config fix

backend/config/main.php
... ... @@ -172,7 +172,17 @@ return [
172 172 'seo-dynamic/<action>/<seo_category_id:[A-Za-z0-9_-]+>/<id:[A-Za-z0-9_-]+>' => 'seo-dynamic/<action>',
173 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 188 'params' => $params,
... ...
backend/controllers/SliderController.php
... ... @@ -6,6 +6,7 @@ use common\models\TemplateLocation;
6 6 use Yii;
7 7 use common\models\Slider;
8 8 use common\models\SliderSearch;
  9 +use yii\db\ActiveQuery;
9 10 use yii\helpers\ArrayHelper;
10 11 use yii\web\Controller;
11 12 use yii\web\NotFoundHttpException;
... ... @@ -51,6 +52,11 @@ class SliderController extends Controller
51 52 {
52 53 $searchModel = new SliderSearch();
53 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 61 return $this->render('index', [
56 62 'searchModel' => $searchModel,
... ... @@ -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 68 * Creates a new Slider model.
75 69 * If creation is successful, the browser will be redirected to the 'view' page.
76 70 * @return mixed
... ...
backend/controllers/SliderImageController.php
... ... @@ -96,20 +96,13 @@
96 96 if($model->load(Yii::$app->request->post())) {
97 97 $model->loadLangs(\Yii::$app->request, $model_langs);
98 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 108 $slider = Slider::findOne($slider_id);
... ... @@ -136,7 +129,8 @@
136 129 $model_langs = $model->generateLangs();
137 130 if($model->load(Yii::$app->request->post())) {
138 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 134 return $this->redirect([
141 135 'view',
142 136 'slider_id' => $slider_id,
... ...
backend/views/banner/index.php
1 1 <?php
2 2  
  3 + use common\models\Banner;
3 4 use yii\helpers\Html;
4 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 12 $this->title = Yii::t('app', 'Banners');
11 13 $this->params[ 'breadcrumbs' ][] = $this->title;
12 14 ?>
13 15 <div class="banner-index">
14 16  
15 17 <h1><?= Html::encode($this->title) ?></h1>
16   - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
17 18  
18 19 <p>
19 20 <?= Html::a(Yii::t('app', 'Create Banner'), [ 'create' ], [ 'class' => 'btn btn-success' ]) ?>
... ... @@ -22,10 +23,34 @@
22 23 'dataProvider' => $dataProvider,
23 24 'filterModel' => $searchModel,
24 25 'columns' => [
25   - [ 'class' => 'yii\grid\SerialColumn' ],
26 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 54 [ 'class' => 'yii\grid\ActionColumn' ],
30 55 ],
31 56 ]); ?>
... ...
backend/views/banner/view.php
... ... @@ -3,10 +3,11 @@
3 3 use yii\helpers\Html;
4 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 11 $this->params[ 'breadcrumbs' ][] = [
11 12 'label' => Yii::t('app', 'Banners'),
12 13 'url' => [ 'index' ],
... ... @@ -35,11 +36,20 @@
35 36 </p>
36 37  
37 38 <?= DetailView::widget([
38   - 'model' => $model,
  39 + 'model' => $model,
39 40 'attributes' => [
40 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 12 * @var SliderImage $model
13 13 * @var SliderImageLang[] $model_langs
14 14 * @var Slider $slider
  15 + * @var int $slider_id
15 16 */
16 17  
17 18 $this->title = Yii::t('app', 'Create Slider Image');
18 19 $this->params[ 'breadcrumbs' ][] = [
  20 + 'label' => Yii::t('app', 'Sliders'),
  21 + 'url' => Url::toRoute([
  22 + 'slider/index',
  23 + ]),
  24 + ];
  25 + $this->params[ 'breadcrumbs' ][] = [
19 26 'label' => Yii::t('app', 'Slider Images'),
20 27 'url' => Url::toRoute([
21 28 'index',
... ...
backend/views/slider-image/index.php
1 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 21 <div class="slider-image-index">
15   -
  22 +
16 23 <h1><?= Html::encode($this->title) ?></h1>
17   - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
18   -
  24 +
19 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 30 </p>
22 31 <?= GridView::widget([
23 32 'dataProvider' => $dataProvider,
24   - 'filterModel' => $searchModel,
25   - 'columns' => [
26   - ['class' => 'yii\grid\SerialColumn'],
27   -
  33 + 'filterModel' => $searchModel,
  34 + 'columns' => [
28 35 'slider_image_id',
29   - 'slider_id',
30 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 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 17  
18 18 $this->title = Yii::t('app', 'Update {modelClass}: ', [
19 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 27 $this->params[ 'breadcrumbs' ][] = [
22 28 'label' => Yii::t('app', 'Slider Images'),
23 29 'url' => Url::toRoute([
... ... @@ -26,7 +32,7 @@
26 32 ]),
27 33 ];
28 34 $this->params[ 'breadcrumbs' ][] = [
29   - 'label' => $model->title,
  35 + 'label' => \Yii::t('app', 'Slide').': '.$model->slider_image_id,
30 36 'url' => Url::toRoute([
31 37 'view',
32 38 'slider_id' => $slider_id,
... ...
backend/views/slider-image/view.php
1 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 28 <div class="slider-image-view">
15   -
  29 +
16 30 <h1><?= Html::encode($this->title) ?></h1>
17   -
  31 +
18 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 43 'class' => 'btn btn-danger',
22   - 'data' => [
  44 + 'data' => [
23 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 49 </p>
28   -
  50 +
29 51 <?= DetailView::widget([
30   - 'model' => $model,
  52 + 'model' => $model,
31 53 'attributes' => [
32 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 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 70 'sort',
38 71 ],
39 72 ]) ?>
... ...
backend/views/slider/create.php
1 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 16 <div class="slider-create">
14   -
  17 +
15 18 <h1><?= Html::encode($this->title) ?></h1>
16   -
  19 +
17 20 <?= $this->render('_form', [
18 21 'model' => $model,
19 22 ]) ?>
... ...
backend/views/slider/index.php
1 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 16 <div class="slider-index">
15   -
  17 +
16 18 <h1><?= Html::encode($this->title) ?></h1>
17   - <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
18   -
  19 +
19 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 22 </p>
22 23 <?= GridView::widget([
23 24 'dataProvider' => $dataProvider,
24   - 'filterModel' => $searchModel,
  25 + 'filterModel' => $searchModel,
25 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 52 'class' => 'yii\grid\ActionColumn',
45 53 'template' => '{update}&nbsp;{image}&nbsp;{delete}',
46 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 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 18 <div class="slider-update">
16   -
  19 +
17 20 <h1><?= Html::encode($this->title) ?></h1>
18   -
  21 +
19 22 <?= $this->render('_form', [
20 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 11 class BannerSearch extends Banner
12 12 {
13 13  
  14 + public $title;
  15 +
14 16 /**
15 17 * @inheritdoc
16 18 */
... ... @@ -25,7 +27,10 @@
25 27 'integer',
26 28 ],
27 29 [
28   - [ 'url' ],
  30 + [
  31 + 'url',
  32 + 'title',
  33 + ],
29 34 'safe',
30 35 ],
31 36 ];
... ... @@ -54,12 +59,24 @@
54 59 */
55 60 public function search($params)
56 61 {
57   - $query = Banner::find();
  62 + $query = Banner::find()
  63 + ->joinWith('lang');
58 64  
59 65 // add conditions that should always apply here
60 66  
61 67 $dataProvider = new ActiveDataProvider([
62 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 82 $this->load($params);
... ... @@ -77,10 +94,15 @@
77 94 ]);
78 95  
79 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 107 return $dataProvider;
86 108 }
... ...
common/models/Slider.php
... ... @@ -35,7 +35,7 @@ class Slider extends \yii\db\ActiveRecord
35 35 return [
36 36 [['speed', 'duration', 'status', 'width', 'height'], 'integer'],
37 37 [['title'], 'string', 'max' => 200],
38   - [['width', 'height'], 'required'],
  38 + [['width', 'height', 'title'], 'required'],
39 39 ['title', 'unique', 'targetClass' => '\common\models\Slider', 'message' => Yii::t('app','message',[
40 40 'field' => 'Title'
41 41 ])],
... ... @@ -65,24 +65,5 @@ class Slider extends \yii\db\ActiveRecord
65 65 {
66 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 4  
5 5 use common\behaviors\SaveImgBehavior;
6 6 use common\modules\language\behaviors\LanguageBehavior;
  7 + use common\modules\language\behaviors\TransactionBehavior;
7 8 use Yii;
8 9 use yii\db\ActiveQuery;
9 10 use yii\db\ActiveRecord;
... ... @@ -35,6 +36,11 @@
35 36 * @method bool linkLangs( ActiveRecord[] $model_langs )
36 37 * @method bool saveLangs( ActiveRecord[] $model_langs )
37 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 45 class SliderImage extends \yii\db\ActiveRecord
40 46 {
... ... @@ -81,9 +87,12 @@
81 87 public function behaviors()
82 88 {
83 89 return [
84   - 'language' => [
  90 + 'language' => [
85 91 'class' => LanguageBehavior::className(),
86 92 ],
  93 + 'transaction' => [
  94 + 'class' => TransactionBehavior::className(),
  95 + ],
87 96 [
88 97 'class' => SaveImgBehavior::className(),
89 98 'fields' => [
... ...
common/models/SliderSearch.php
... ... @@ -2,10 +2,8 @@
2 2  
3 3 namespace common\models;
4 4  
5   -use Yii;
6 5 use yii\base\Model;
7 6 use yii\data\ActiveDataProvider;
8   -use common\models\Slider;
9 7  
10 8 /**
11 9 * SliderSearch represents the model behind the search form about `common\models\Slider`.
... ... @@ -19,8 +17,8 @@ class SliderSearch extends Slider
19 17 public function rules()
20 18 {
21 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 59 // grid filtering conditions
62 60 $query->andFilterWhere([
63 61 'slider_id' => $this->slider_id,
64   - 'speed' => $this->speed,
65   - 'duration' => $this->duration,
66 62 'status' => $this->status,
67   -
68 63 ]);
69 64  
70 65 $query->andFilterWhere(['like', 'title', $this->title]);
... ...
common/modules/language/readme.txt
... ... @@ -93,4 +93,4 @@ public function behaviors() {
93 93 2. При POST запросе загружаем данные в языковые модели {Table}->loadLangs(Request $request, {TableLangs[]} $model_langs)
94 94 3. Передаем в свойство model_langs модели {Table} массив {TableLang[]}: $model->model_langs = $model_langs
95 95 4. После сохранения, если транзанкция успешна, то свойство {Table}->transactionStatus будет true, иначе возникла ошибка в какой то модели.
96   -7. Получать данные на публичной части сайта через {Table}->lang.
97 96 \ No newline at end of file
  97 +7. Получать данные на публичной части сайта через {Table}->lang.
... ...