Commit f5769826473208c14ce6271fec7a20a5862282aa

Authored by Mihail
1 parent 2cdc93f0

add modal form for create importer prefix and add handaling for delimiter

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
vendor/yiisoft/multiparser/CsvParser.php
@@ -59,6 +59,7 @@ class CsvParser implements ParserInterface @@ -59,6 +59,7 @@ class CsvParser implements ParserInterface
59 */ 59 */
60 public function setup() 60 public function setup()
61 { 61 {
  62 +
62 $this->file->setCsvControl($this->delimiter); 63 $this->file->setCsvControl($this->delimiter);
63 $this->file->setFlags(\SplFileObject::READ_CSV); 64 $this->file->setFlags(\SplFileObject::READ_CSV);
64 $this->file->setFlags(\SplFileObject::SKIP_EMPTY); 65 $this->file->setFlags(\SplFileObject::SKIP_EMPTY);