From 2a7a75b8ebfa7b2a080712b9b35bbcd39cf84234 Mon Sep 17 00:00:00 2001 From: Mihail Date: Thu, 10 Sep 2015 18:06:50 +0300 Subject: [PATCH] add first version XML parser, add CSVconverter --- backend/components/parsers/CustomCsvParser.php | 15 +++++++-------- backend/components/parsers/CustomParserConfigurator.php | 28 ---------------------------- backend/components/parsers/DynamicFormHelper.php | 73 ------------------------------------------------------------------------- backend/components/parsers/Encoder.php | 51 --------------------------------------------------- backend/components/parsers/ValueFilter.php | 45 --------------------------------------------- backend/components/parsers/config.php | 29 +++++++++++++++++++++++++++++ backend/config/main.php | 2 ++ backend/controllers/ParserController.php | 9 +++++---- backend/views/parser/results.php | 4 ++-- 9 files changed, 45 insertions(+), 211 deletions(-) delete mode 100644 backend/components/parsers/CustomParserConfigurator.php delete mode 100644 backend/components/parsers/DynamicFormHelper.php delete mode 100644 backend/components/parsers/Encoder.php delete mode 100644 backend/components/parsers/ValueFilter.php create mode 100644 backend/components/parsers/config.php diff --git a/backend/components/parsers/CustomCsvParser.php b/backend/components/parsers/CustomCsvParser.php index 5c45f7a..190fd91 100644 --- a/backend/components/parsers/CustomCsvParser.php +++ b/backend/components/parsers/CustomCsvParser.php @@ -14,20 +14,19 @@ class CustomCsvParser extends \yii\multiparser\CsvParser { //public $last_line = 10; //public $hasHeaderRow = true; // public $keys = ['first','second', 'third', 'forth', 'fifth']; - - - protected function readRow() + public function setupConverter() { - $row = parent::readRow(); - if (is_array($row)) { - - $row = Encoder::encodeArray( Encoder::$in_charset, Encoder::$out_charset, $row ); + if ($this->hasHeaderRow) { + // если у файла есть заголовок, то в результате имеем ассоциативный массив + $this->converter_conf['hasKey'] = 1; } - return $row; + $this->converter = \Yii::createObject($this->converter_conf); + \common\components\CustomVarDamp::dumpAndDie($this); } + } \ No newline at end of file diff --git a/backend/components/parsers/CustomParserConfigurator.php b/backend/components/parsers/CustomParserConfigurator.php deleted file mode 100644 index 18b08e8..0000000 --- a/backend/components/parsers/CustomParserConfigurator.php +++ /dev/null @@ -1,28 +0,0 @@ - - ['web' => - ['class' => 'backend\components\parsers\CustomCsvParser', - 'auto_detect_first_line' => true,]]]; - - - - public static $basic_column = [ - "BRAND" => 'Бренд', - "ARTICLE"=> 'Артикул', - "PRICE" => 'Цена', - "DESCR" => 'Наименование', - "BOX" => 'Колво', - "ADD_BOX"=> 'В пути', - "GROUP" => 'Группа RG' - ]; - - -} \ No newline at end of file diff --git a/backend/components/parsers/DynamicFormHelper.php b/backend/components/parsers/DynamicFormHelper.php deleted file mode 100644 index 675a0fb..0000000 --- a/backend/components/parsers/DynamicFormHelper.php +++ /dev/null @@ -1,73 +0,0 @@ - $i) { - $arr_keys[] = "attr_{$i}"; - $i++; - } - array_flip($arr_keys); - - } - - $model = new DynamicModel($arr_keys); - - return $model; - } - - // @todo - rewrite on two functions, add comments - public static function CreateDynamicGridViewWithDropDownListHeader( $dataProvider, $form, $header_model, $arr_header_values ) - { - $columns_config = [['class' => SerialColumn::className()]]; - $i = 0; - foreach( $header_model as $key => $value ) { - - $columns_config[] = ['header' => $form->field($header_model, $key, ['inputOptions' => ['label' => '']])->dropDownList($arr_header_values), 'attribute' => $i]; - $i++; - } - - //\common\components\CustomVarDamp::dumpAndDie($columns_config); - - $dynamic_grid_view = GridView::widget( ['dataProvider' => $dataProvider, - 'columns' => $columns_config ] ); - - return $dynamic_grid_view; - - } - - - -} \ No newline at end of file diff --git a/backend/components/parsers/Encoder.php b/backend/components/parsers/Encoder.php deleted file mode 100644 index ca2b467..0000000 --- a/backend/components/parsers/Encoder.php +++ /dev/null @@ -1,51 +0,0 @@ - + ['web' => + ['class' => 'backend\components\parsers\CustomCsvParser', + 'auto_detect_first_line' => true, + 'converter_conf' => ['class' => 'yii\multiparser\CsvConverter', + 'configuration' => [ + "string" => 'DESCR' + ] + ,]], + + 'basic_column' => [ + "BRAND" => 'Бренд', + "ARTICLE"=> 'Артикул', + "PRICE" => 'Цена', + "DESCR" => 'Наименование', + "BOX" => 'Колво', + "ADD_BOX"=> 'В пути', + "GROUP" => 'Группа RG' + ], + ]]; + + +//[ +// "float" => 'PRICE', +// "integer" => ['BOX' , 'ADD_BOX' ], +// "prefix" => 'ARTICLE' +//] \ No newline at end of file diff --git a/backend/config/main.php b/backend/config/main.php index fcac464..386e300 100644 --- a/backend/config/main.php +++ b/backend/config/main.php @@ -5,6 +5,7 @@ $params = array_merge( require(__DIR__ . '/params.php'), require(__DIR__ . '/params-local.php') ); +$mp_configuration = require( __DIR__ . '/../components/parsers/config.php'); return [ 'id' => 'app-backend', @@ -41,6 +42,7 @@ return [ 'multiparser'=>[ 'class' => 'yii\multiparser\YiiMultiparser', + 'configuration' => $mp_configuration, ], ], diff --git a/backend/controllers/ParserController.php b/backend/controllers/ParserController.php index 310c228..4b86f2a 100644 --- a/backend/controllers/ParserController.php +++ b/backend/controllers/ParserController.php @@ -8,7 +8,7 @@ use yii\filters\VerbFilter; use backend\models\UploadFileParsingForm; use yii\web\UploadedFile; use yii\data\ArrayDataProvider; -use backend\components\parsers\DynamicFormHelper; +use yii\multiparser\DynamicFormHelper; use backend\components\parsers\CustomParserConfigurator; use common\components\CustomVarDamp; @@ -96,13 +96,14 @@ class ParserController extends BaseController ], ]); + // CustomVarDamp::dumpAndDie($data); $header_model = DynamicFormHelper::CreateDynamicModel( count( $data[0] ) ); - //CustomVarDamp::dumpAndDie($header_model); + // CustomVarDamp::dumpAndDie(Yii::$app->multiparser->getConfiguration('csv','basic_column')); return $this->render('results', ['model' => $data, 'header_model' => $header_model, - 'basic_column' => CustomParserConfigurator::$basic_column, + 'basic_column' => Yii::$app->multiparser->getConfiguration('csv','basic_column'), 'dataProvider' => $provider]); } @@ -113,7 +114,7 @@ public function actionWrite() $arr_attributes = Yii::$app->request->post()['DynamicModel']; $model = DynamicFormHelper::CreateDynamicModel( $arr_attributes ); foreach ($arr_attributes as $key => $value) { - $model->addRule($key, 'in', ['range' => array_keys( CustomParserConfigurator::$basic_column )]); + $model->addRule($key, 'in', ['range' => array_keys( Yii::$app->multiparser->getConfiguration('csv','basic_column') )]); } //CustomVarDamp::dumpAndDie($model); diff --git a/backend/views/parser/results.php b/backend/views/parser/results.php index 2f3c7d0..e0c6460 100644 --- a/backend/views/parser/results.php +++ b/backend/views/parser/results.php @@ -1,7 +1,7 @@ params['breadcrumbs'][] = $this->title; $form = ActiveForm::begin(['action' => 'write']); ?> - +
'btn btn-primary']) ?> -- libgit2 0.21.4