Commit f5769826473208c14ce6271fec7a20a5862282aa
1 parent
2cdc93f0
add modal form for create importer prefix and add handaling for delimiter
Showing
10 changed files
with
81 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 |
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); |