Commit a3a9066a91002b723e30b3415abc1f25eb809d57
1 parent
c6395629
add modal form for create importer prefix and add handaling for delimiter
Showing
9 changed files
with
80 additions
and
37 deletions
Show diff stats
backend/controllers/ImportersPrefixController.php
@@ -54,9 +54,10 @@ class ImportersPrefixController extends BaseController | @@ -54,9 +54,10 @@ class ImportersPrefixController extends BaseController | ||
54 | $model = new ImportersPrefix(); | 54 | $model = new ImportersPrefix(); |
55 | 55 | ||
56 | if ($model->load(Yii::$app->request->post()) && $model->save()) { | 56 | if ($model->load(Yii::$app->request->post()) && $model->save()) { |
57 | - return $this->redirect(['view', 'id' => $model->id]); | 57 | + //return $this->redirect(['view', 'id' => $model->id]); |
58 | + return $this->redirect('index'); | ||
58 | } else { | 59 | } else { |
59 | - return $this->render('create', [ | 60 | + return $this->renderAjax('create', [ |
60 | 'model' => $model, | 61 | 'model' => $model, |
61 | ]); | 62 | ]); |
62 | } | 63 | } |
@@ -73,7 +74,8 @@ class ImportersPrefixController extends BaseController | @@ -73,7 +74,8 @@ class ImportersPrefixController extends BaseController | ||
73 | $model = $this->findModel($id); | 74 | $model = $this->findModel($id); |
74 | 75 | ||
75 | if ($model->load(Yii::$app->request->post()) && $model->save()) { | 76 | if ($model->load(Yii::$app->request->post()) && $model->save()) { |
76 | - return $this->redirect(['view', 'id' => $model->id]); | 77 | + // return $this->redirect(['view', 'id' => $model->id]); |
78 | + return $this->redirect('index'); | ||
77 | } else { | 79 | } else { |
78 | return $this->render('update', [ | 80 | return $this->render('update', [ |
79 | 'model' => $model, | 81 | 'model' => $model, |
backend/controllers/ParserController.php
@@ -111,7 +111,12 @@ class ParserController extends BaseController | @@ -111,7 +111,12 @@ class ParserController extends BaseController | ||
111 | 111 | ||
112 | // === ручная загрузка =========== | 112 | // === ручная загрузка =========== |
113 | //запускаем парсинг | 113 | //запускаем парсинг |
114 | - $data = $model->readFile(); | 114 | + // доп. опции для парсера |
115 | + $options = []; | ||
116 | + if( ! $model->action ) // обработка с кастомным разделителем | ||
117 | + $options['$delimiter'] = $model->delimiter; | ||
118 | + | ||
119 | + $data = $model->readFile( $options ); | ||
115 | // сохраняем в кеш отпарсенные даные | 120 | // сохраняем в кеш отпарсенные даные |
116 | Yii::$app->getCache()->set('parser_data', json_encode($data)); | 121 | Yii::$app->getCache()->set('parser_data', json_encode($data)); |
117 | // сохраняем в кеш модель - в ней настройки для дальнейшей обработки данных | 122 | // сохраняем в кеш модель - в ней настройки для дальнейшей обработки данных |
backend/models/ImportersPrefix.php
@@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
3 | namespace backend\models; | 3 | namespace backend\models; |
4 | 4 | ||
5 | use Yii; | 5 | use Yii; |
6 | +use backend\models\Importers; | ||
6 | 7 | ||
7 | /** | 8 | /** |
8 | * This is the model class for table "w_importers_prefix". | 9 | * This is the model class for table "w_importers_prefix". |
@@ -15,13 +16,6 @@ use Yii; | @@ -15,13 +16,6 @@ use Yii; | ||
15 | */ | 16 | */ |
16 | class ImportersPrefix extends \backend\components\base\BaseActiveRecord | 17 | class ImportersPrefix extends \backend\components\base\BaseActiveRecord |
17 | { | 18 | { |
18 | - /** | ||
19 | - * @inheritdoc | ||
20 | - */ | ||
21 | - public static function tableName() | ||
22 | - { | ||
23 | - return 'w_importers_prefix'; | ||
24 | - } | ||
25 | 19 | ||
26 | /** | 20 | /** |
27 | * @inheritdoc | 21 | * @inheritdoc |
@@ -38,6 +32,11 @@ class ImportersPrefix extends \backend\components\base\BaseActiveRecord | @@ -38,6 +32,11 @@ class ImportersPrefix extends \backend\components\base\BaseActiveRecord | ||
38 | ]; | 32 | ]; |
39 | } | 33 | } |
40 | 34 | ||
35 | + | ||
36 | + public function getImporterName () | ||
37 | + { | ||
38 | + return Importers::findOne($this->importer_id)->name; | ||
39 | + } | ||
41 | /** | 40 | /** |
42 | * @inheritdoc | 41 | * @inheritdoc |
43 | */ | 42 | */ |
@@ -45,10 +44,10 @@ class ImportersPrefix extends \backend\components\base\BaseActiveRecord | @@ -45,10 +44,10 @@ class ImportersPrefix extends \backend\components\base\BaseActiveRecord | ||
45 | { | 44 | { |
46 | return [ | 45 | return [ |
47 | 'id' => Yii::t('app', 'ID'), | 46 | 'id' => Yii::t('app', 'ID'), |
48 | - 'importer_id' => Yii::t('app', 'Importer ID'), | ||
49 | - 'brand' => Yii::t('app', 'Brand'), | ||
50 | - 'prefix' => Yii::t('app', 'Prefix'), | ||
51 | - 'timestamp' => Yii::t('app', 'Timestamp'), | 47 | + 'importer_id' => Yii::t('app', 'Поставщик'), |
48 | + 'brand' => Yii::t('app', 'Бренд'), | ||
49 | + 'prefix' => Yii::t('app', 'Префикс'), | ||
50 | + 'timestamp' => Yii::t('app', 'Дата создания'), | ||
52 | ]; | 51 | ]; |
53 | } | 52 | } |
54 | } | 53 | } |
backend/views/check-price/index.php
@@ -16,8 +16,7 @@ $this->title = 'Проверка прайсов'; | @@ -16,8 +16,7 @@ $this->title = 'Проверка прайсов'; | ||
16 | $this->params['breadcrumbs'][] = $this->title; | 16 | $this->params['breadcrumbs'][] = $this->title; |
17 | // зарегистрируем скрипт для обработки загрузки модального окна | 17 | // зарегистрируем скрипт для обработки загрузки модального окна |
18 | ParserAsset::register($this); | 18 | ParserAsset::register($this); |
19 | -// убрал Pjax потому что он при выполнении блокирует скрипт вызова модального окна | ||
20 | -//Pjax::begin(); | 19 | +Pjax::begin(['id' => 'gridViewContent']); |
21 | ?> | 20 | ?> |
22 | <div class="catalog-index"> | 21 | <div class="catalog-index"> |
23 | 22 | ||
@@ -73,7 +72,7 @@ ParserAsset::register($this); | @@ -73,7 +72,7 @@ ParserAsset::register($this); | ||
73 | 'size' => 'modal-lg', | 72 | 'size' => 'modal-lg', |
74 | ]); | 73 | ]); |
75 | 74 | ||
76 | - echo "<div id='modalContent'></div>"; | 75 | + echo "<div class='modalContent'></div>"; |
77 | Modal::end(); | 76 | Modal::end(); |
78 | // Pjax::end(); | 77 | // Pjax::end(); |
79 | ?> | 78 | ?> |
backend/views/importers-prefix/_form.php
@@ -2,6 +2,9 @@ | @@ -2,6 +2,9 @@ | ||
2 | 2 | ||
3 | use yii\helpers\Html; | 3 | use yii\helpers\Html; |
4 | use yii\widgets\ActiveForm; | 4 | use yii\widgets\ActiveForm; |
5 | +use backend\models\Importers; | ||
6 | +use yii\helpers\ArrayHelper; | ||
7 | + | ||
5 | 8 | ||
6 | /* @var $this yii\web\View */ | 9 | /* @var $this yii\web\View */ |
7 | /* @var $model backend\models\ImportersPrefix */ | 10 | /* @var $model backend\models\ImportersPrefix */ |
@@ -10,18 +13,19 @@ use yii\widgets\ActiveForm; | @@ -10,18 +13,19 @@ use yii\widgets\ActiveForm; | ||
10 | 13 | ||
11 | <div class="importers-prefix-form"> | 14 | <div class="importers-prefix-form"> |
12 | 15 | ||
13 | - <?php $form = ActiveForm::begin(); ?> | 16 | + <?php $form = ActiveForm::begin(); |
17 | + | ||
18 | + ?> | ||
14 | 19 | ||
15 | - <?= $form->field($model, 'importer_id')->textInput(['maxlength' => true]) ?> | 20 | + <?= $form->field($model, 'importer_id')->dropDownList(ArrayHelper::map( Importers::find()->all(), 'id','name' )); ?> |
16 | 21 | ||
17 | <?= $form->field($model, 'brand')->textInput(['maxlength' => true]) ?> | 22 | <?= $form->field($model, 'brand')->textInput(['maxlength' => true]) ?> |
18 | 23 | ||
19 | <?= $form->field($model, 'prefix')->textInput(['maxlength' => true]) ?> | 24 | <?= $form->field($model, 'prefix')->textInput(['maxlength' => true]) ?> |
20 | 25 | ||
21 | - <?= $form->field($model, 'timestamp')->textInput() ?> | ||
22 | 26 | ||
23 | <div class="form-group"> | 27 | <div class="form-group"> |
24 | - <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | 28 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Добавить') : Yii::t('app', 'Редактировать'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary',]) ?> |
25 | </div> | 29 | </div> |
26 | 30 | ||
27 | <?php ActiveForm::end(); ?> | 31 | <?php ActiveForm::end(); ?> |
backend/views/importers-prefix/create.php
@@ -6,7 +6,7 @@ use yii\helpers\Html; | @@ -6,7 +6,7 @@ use yii\helpers\Html; | ||
6 | /* @var $this yii\web\View */ | 6 | /* @var $this yii\web\View */ |
7 | /* @var $model backend\models\ImportersPrefix */ | 7 | /* @var $model backend\models\ImportersPrefix */ |
8 | 8 | ||
9 | -$this->title = Yii::t('app', 'Create Importers Prefix'); | 9 | +$this->title = Yii::t('app', 'Добавление'); |
10 | $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Importers Prefixes'), 'url' => ['index']]; | 10 | $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Importers Prefixes'), 'url' => ['index']]; |
11 | $this->params['breadcrumbs'][] = $this->title; | 11 | $this->params['breadcrumbs'][] = $this->title; |
12 | ?> | 12 | ?> |
backend/views/importers-prefix/index.php
@@ -2,6 +2,10 @@ | @@ -2,6 +2,10 @@ | ||
2 | 2 | ||
3 | use yii\helpers\Html; | 3 | use yii\helpers\Html; |
4 | use yii\grid\GridView; | 4 | use yii\grid\GridView; |
5 | +use yii\widgets\Pjax; | ||
6 | +use yii\bootstrap\Modal; | ||
7 | +use backend\assets\ParserAsset; | ||
8 | +use yii\helpers\Url; | ||
5 | 9 | ||
6 | /* @var $this yii\web\View */ | 10 | /* @var $this yii\web\View */ |
7 | /* @var $searchModel backend\models\ImportersPrefixSearсh */ | 11 | /* @var $searchModel backend\models\ImportersPrefixSearсh */ |
@@ -9,30 +13,62 @@ use yii\grid\GridView; | @@ -9,30 +13,62 @@ use yii\grid\GridView; | ||
9 | 13 | ||
10 | $this->title = Yii::t('app', 'Список префиксов поставщиков'); | 14 | $this->title = Yii::t('app', 'Список префиксов поставщиков'); |
11 | $this->params['breadcrumbs'][] = $this->title; | 15 | $this->params['breadcrumbs'][] = $this->title; |
16 | +ParserAsset::register($this); | ||
17 | +$url = Url::to(['create']); | ||
18 | + | ||
12 | ?> | 19 | ?> |
13 | 20 | ||
14 | <div class="importers-prefix-index"> | 21 | <div class="importers-prefix-index"> |
15 | 22 | ||
16 | <h1><?= Html::encode($this->title) ?></h1> | 23 | <h1><?= Html::encode($this->title) ?></h1> |
17 | - <?= Html::a(Yii::t('app', 'Create Importers Prefix'), ['create'], ['class' => 'btn btn-success']) ?> | ||
18 | - <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | ||
19 | - | 24 | + <p> |
25 | + <?= Html::a(Yii::t('app', 'Добавление'), '#', ['class' => 'btn btn-success modalButton', 'value' => $url]) ?> | ||
26 | + </p> | ||
27 | + <?php // echo $this->render('_search', ['model' => $searchModel]); | ||
28 | + Pjax::begin(['id' => 'gridViewContent']); | ||
20 | 29 | ||
30 | + ?> | ||
21 | 31 | ||
22 | <?= GridView::widget([ | 32 | <?= GridView::widget([ |
23 | 'dataProvider' => $dataProvider, | 33 | 'dataProvider' => $dataProvider, |
24 | 'filterModel' => $searchModel, | 34 | 'filterModel' => $searchModel, |
25 | 'columns' => [ | 35 | 'columns' => [ |
26 | ['class' => 'yii\grid\SerialColumn'], | 36 | ['class' => 'yii\grid\SerialColumn'], |
27 | - | ||
28 | - 'importer_id', | ||
29 | - 'brand', | ||
30 | - 'prefix', | ||
31 | - 'timestamp', | 37 | + [ |
38 | + 'attribute' => 'importer_id', | ||
39 | + 'label' => 'ПОСТАВЩИК', | ||
40 | + 'value' => function ($data) { | ||
41 | + return $data->importerName;} | ||
42 | + ], | ||
43 | + [ | ||
44 | + 'attribute' => 'brand', | ||
45 | + 'label' => 'БРЕНД', | ||
46 | + ], | ||
47 | + [ | ||
48 | + 'attribute' => 'prefix', | ||
49 | + 'label' => 'ПРЕФИКСЫ (ЧЕРЕЗ ,)', | ||
50 | + ], | ||
51 | + [ | ||
52 | + 'attribute' => 'timestamp', | ||
53 | + 'label' => 'ДАТА ДОБАВЛЕНИЯ', | ||
54 | + ], | ||
32 | 55 | ||
33 | ['class' => 'yii\grid\ActionColumn', | 56 | ['class' => 'yii\grid\ActionColumn', |
34 | 'template' => '{update},{delete}'], | 57 | 'template' => '{update},{delete}'], |
35 | ], | 58 | ], |
36 | - ]); ?> | 59 | + ]); |
60 | + | ||
61 | + | ||
62 | + | ||
63 | + // сюда будем всавлять контент модального окна | ||
64 | + Modal::begin([ | ||
65 | + 'id' => 'modal', | ||
66 | + 'size' => 'modal-lg', | ||
67 | + ]); | ||
68 | + | ||
69 | + echo "<div class='modalContent'></div>"; | ||
70 | + Modal::end(); | ||
71 | + Pjax::end(); | ||
72 | + ?> | ||
37 | 73 | ||
38 | </div> | 74 | </div> |
backend/views/importers-prefix/update.php
@@ -5,9 +5,7 @@ use yii\helpers\Html; | @@ -5,9 +5,7 @@ use yii\helpers\Html; | ||
5 | /* @var $this yii\web\View */ | 5 | /* @var $this yii\web\View */ |
6 | /* @var $model backend\models\ImportersPrefix */ | 6 | /* @var $model backend\models\ImportersPrefix */ |
7 | 7 | ||
8 | -$this->title = Yii::t('app', 'Update {modelClass}: ', [ | ||
9 | - 'modelClass' => 'Importers Prefix', | ||
10 | -]) . ' ' . $model->id; | 8 | +$this->title = Yii::t('app', "Редактирование префикса поставщика") . ' ' . $model->importerName; |
11 | $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Importers Prefixes'), 'url' => ['index']]; | 9 | $this->params['breadcrumbs'][] = ['label' => Yii::t('app', 'Importers Prefixes'), 'url' => ['index']]; |
12 | $this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; | 10 | $this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]]; |
13 | $this->params['breadcrumbs'][] = Yii::t('app', 'Update'); | 11 | $this->params['breadcrumbs'][] = Yii::t('app', 'Update'); |
backend/web/js/parser.js
@@ -5,9 +5,9 @@ $(function(){ | @@ -5,9 +5,9 @@ $(function(){ | ||
5 | $('.modalButton').click(function (){ | 5 | $('.modalButton').click(function (){ |
6 | // находим контейнер с модальным контентом и подгружаем в него по оджаксу результат | 6 | // находим контейнер с модальным контентом и подгружаем в него по оджаксу результат |
7 | $('#modal').modal('show') | 7 | $('#modal').modal('show') |
8 | - .find('#modalContent') | 8 | + .find('.modalContent') |
9 | .load($(this).attr('value')); // в 'value' - у нас указан путь с гет параметрами к конроллеру | 9 | .load($(this).attr('value')); // в 'value' - у нас указан путь с гет параметрами к конроллеру |
10 | - | 10 | + $.pjax.reload({container:'#gridViewContent'}); |
11 | }); | 11 | }); |
12 | 12 | ||
13 | 13 |