Commit d8aa85f354b9f82004fbf6de9a4878ae1d15dfa9
1 parent
b46a9c6c
add examples for xls and txt parsers
Showing
6 changed files
with
140 additions
and
3 deletions
Show diff stats
examples/UploadFileParsingForm.php
| @@ -23,6 +23,8 @@ class UploadFileParsingForm extends Model | @@ -23,6 +23,8 @@ class UploadFileParsingForm extends Model | ||
| 23 | // 1 - csv template file from data/template.csv | 23 | // 1 - csv template file from data/template.csv |
| 24 | // 2 - xml template file from data/template.xml | 24 | // 2 - xml template file from data/template.xml |
| 25 | // 3 - xlsx template file from data/template.xlsx | 25 | // 3 - xlsx template file from data/template.xlsx |
| 26 | + // 4 - xls template file from data/template.xls | ||
| 27 | + // 5 - txt template file from data/template.txt | ||
| 26 | public $file_type = 0; | 28 | public $file_type = 0; |
| 27 | 29 | ||
| 28 | 30 | ||
| @@ -34,11 +36,11 @@ class UploadFileParsingForm extends Model | @@ -34,11 +36,11 @@ class UploadFileParsingForm extends Model | ||
| 34 | } | 36 | } |
| 35 | JS; | 37 | JS; |
| 36 | return [ | 38 | return [ |
| 37 | - ['file_type', 'in', 'range' => range( 0, 3 ) ], | 39 | + ['file_type', 'in', 'range' => range( 0, 5 ) ], |
| 38 | ['file', 'required', 'when' => function(){ | 40 | ['file', 'required', 'when' => function(){ |
| 39 | return !$this->file_type; | 41 | return !$this->file_type; |
| 40 | } , 'whenClient' => $client_func], | 42 | } , 'whenClient' => $client_func], |
| 41 | - [['file'], 'file', 'extensions' => ['csv', 'xlsx', 'xml'], 'checkExtensionByMimeType' => false ], | 43 | + [['file'], 'file', 'extensions' => ['csv', 'xlsx', 'xml', 'xls', 'txt'], 'checkExtensionByMimeType' => false ], |
| 42 | ['file_path', 'safe'], | 44 | ['file_path', 'safe'], |
| 43 | 45 | ||
| 44 | ]; | 46 | ]; |
| 1 | +Áðåíä Íàèìåíîâàíèå Öåíà çàêóïêè Îñòàòîê | ||
| 2 | +EL ZIP THERPR L Êóðòêà ÷îëîâ³÷à ñèíòåòè÷íà 2610.0000 2 | ||
| 3 | +EL ZIP THERPR XL Êóðòêà 2610.0000 3 | ||
| 4 | +EL ZIP THERPR XXL Êóðòêà 2610.0000 2 | ||
| 5 | +ES REKL045 Ñåêàòîð 433.6900 3 | ||
| 6 | +ES REKL060 Ñåðòèôiêàò ïîäàðóíêîâèé 476.8500 7 | ||
| 7 | +ES REKL067 Ñåðòèôiêàò ïîäàðóíêîâèé 866.7800 1 | ||
| 8 | +ES REKL072 Ñåðòèôiêàò ïîäàðóíêîâèé 1103.2500 4 | ||
| 9 | +ES REKL083 Ñåðòèôiêàò ïîäàðóíêîâèé 1892.2500 5 | ||
| 10 | +ES REKL103 Ñåðòèôiêàò ïîäàðóíêîâèé 3467.6500 2 | ||
| 11 | +ES REKL115 Íiæ ãîñïîäàðñüêèé 790.0500 5 | ||
| 12 | +ES REKL138 Ïîäàðóíêîâèé Ñåðòèô³êàò 2088.0000 2 | ||
| 13 | + |
No preview for this file type
examples/config.php
| @@ -86,7 +86,7 @@ return [ | @@ -86,7 +86,7 @@ return [ | ||
| 86 | ], | 86 | ], |
| 87 | 'template' => | 87 | 'template' => |
| 88 | ['class' => 'yii\multiparser\XlsxParser', | 88 | ['class' => 'yii\multiparser\XlsxParser', |
| 89 | - 'path_for_extract_files' => $_SERVER["DOCUMENT_ROOT"] . 'tests/_data/xlsx_tmp', | 89 | + 'path_for_extract_files' => $_SERVER["DOCUMENT_ROOT"] . '/tests/_data/xlsx_tmp/', |
| 90 | 'keys' => [ | 90 | 'keys' => [ |
| 91 | 0 => 'Original', | 91 | 0 => 'Original', |
| 92 | 1 => 'Replacement', | 92 | 1 => 'Replacement', |
| @@ -101,5 +101,63 @@ return [ | @@ -101,5 +101,63 @@ return [ | ||
| 101 | "Count" => 'Количество', | 101 | "Count" => 'Количество', |
| 102 | ], | 102 | ], |
| 103 | ], | 103 | ], |
| 104 | + 'xls' => | ||
| 105 | + ['custom' => | ||
| 106 | + ['class' => 'yii\multiparser\XlsParser', | ||
| 107 | + ], | ||
| 108 | + 'template' => | ||
| 109 | + ['class' => 'yii\multiparser\XlsParser', | ||
| 110 | + 'converter_conf' => [ | ||
| 111 | + 'class' => ' yii\multiparser\Converter', | ||
| 112 | + 'configuration' => ["encode" => [], | ||
| 113 | + ] | ||
| 114 | + ],], | ||
| 115 | + | ||
| 116 | + 'basic_column' => [ | ||
| 117 | + Null => 'Пусто', | ||
| 118 | + "BRAND" => 'Бренд', | ||
| 119 | + "ARTICLE" => 'Артикул', | ||
| 120 | + "PRICE" => 'Цена', | ||
| 121 | + "DESCR" => 'Наименование', | ||
| 122 | + "BOX" => 'Колво', | ||
| 123 | + "ADD_BOX" => 'В пути', | ||
| 124 | + "GROUP" => 'Группа RG' | ||
| 125 | + ], | ||
| 126 | + ], | ||
| 127 | + 'txt' => | ||
| 128 | + ['custom' => | ||
| 129 | + ['class' => 'yii\multiparser\CsvParser', | ||
| 130 | + 'delimiter' => "\t", | ||
| 131 | + 'converter_conf' => [ | ||
| 132 | + 'class' => 'yii\multiparser\Converter', | ||
| 133 | + 'configuration' => ["encode" => []], | ||
| 134 | + ] | ||
| 135 | + ], | ||
| 136 | + 'template' => | ||
| 137 | + ['class' => 'yii\multiparser\CsvParser', | ||
| 138 | + 'delimiter' => "\t", | ||
| 139 | + 'keys' => [ | ||
| 140 | + 0 => 'Brand', | ||
| 141 | + 1 => 'Article', | ||
| 142 | + 2 => 'Price', | ||
| 143 | + 4 => 'Count', | ||
| 144 | + ], | ||
| 145 | + 'converter_conf' => [ | ||
| 146 | + 'class' => 'yii\multiparser\Converter', | ||
| 147 | + 'configuration' => ["encode" => 'Brand', | ||
| 148 | + "float" => 'Price', | ||
| 149 | + "integer" => 'Count' | ||
| 150 | + ] | ||
| 151 | + ],], | ||
| 152 | + | ||
| 153 | + 'basic_column' => [ | ||
| 154 | + Null => 'null', | ||
| 155 | + "Description" => 'Название', | ||
| 156 | + "Article" => 'Артикул', | ||
| 157 | + "Price" => 'Цена', | ||
| 158 | + "Brand" => 'Производитель', | ||
| 159 | + "Count" => 'Количество', | ||
| 160 | + ], | ||
| 161 | + ], | ||
| 104 | ]; | 162 | ]; |
| 105 | 163 |
| 1 | +<?php | ||
| 2 | +use yii\widgets\ActiveForm; | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\helpers\ArrayHelper; | ||
| 5 | + | ||
| 6 | +?> | ||
| 7 | +<div class="row"> | ||
| 8 | + <div class="col-lg-5"> | ||
| 9 | + <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data',],'action'=>['parser/read']]); | ||
| 10 | + ?> | ||
| 11 | + <h3>Choose file to parse</h3> | ||
| 12 | + | ||
| 13 | + <?= $form->field($model, 'file')->fileInput() ?> | ||
| 14 | + | ||
| 15 | + <?= $form->field($model, 'file_type')->radioList([0 => 'Custom file', 1 => 'csv template', 2 => 'xml template', 3 => 'xlsx template', 4 => 'xls template', 5 => 'txt template'])->label(false); | ||
| 16 | + ?> | ||
| 17 | + | ||
| 18 | + <div class="form-group"> | ||
| 19 | + <?= Html::submitButton('Read', ['class' => 'btn btn-primary']) ?> | ||
| 20 | + </div> | ||
| 21 | + | ||
| 22 | + <?php ActiveForm::end(); | ||
| 23 | + ?> | ||
| 24 | + </div> | ||
| 25 | +</div> | ||
| 26 | + |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\multiparser\DynamicFormHelper; | ||
| 5 | +use yii\widgets\ActiveForm; | ||
| 6 | + | ||
| 7 | + | ||
| 8 | +/* @var $this yii\web\View */ | ||
| 9 | +/* @var $searchModel backend\models\CatalogSearch */ | ||
| 10 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
| 11 | + | ||
| 12 | +$this->title = 'Results'; | ||
| 13 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 14 | +?> | ||
| 15 | +<div class="catalog-index"> | ||
| 16 | + | ||
| 17 | + <h1><?= Html::encode($this->title) ?></h1> | ||
| 18 | + <?php | ||
| 19 | + | ||
| 20 | + $form = ActiveForm::begin(['action' => 'write']); | ||
| 21 | + | ||
| 22 | + if (empty( $header_model )) { | ||
| 23 | + // выведем просто массив без колонок выбора | ||
| 24 | + echo \yii\grid\GridView::widget([ | ||
| 25 | + 'dataProvider' => $dataProvider, | ||
| 26 | + // 'layout'=>"{pager}\n{items}", | ||
| 27 | + | ||
| 28 | + ]); | ||
| 29 | + | ||
| 30 | + } else { | ||
| 31 | + echo DynamicFormHelper::CreateGridWithDropDownListHeader($dataProvider, $form, $header_model, $basic_column); | ||
| 32 | + } | ||
| 33 | + ?> | ||
| 34 | + | ||
| 35 | + <?php ActiveForm::end() ?> | ||
| 36 | + <?= Html::a('Return', ['parser/index'], ['class' => 'btn btn-primary', 'name' => 'Return',]) ?> | ||
| 37 | + | ||
| 38 | +</div> | ||
| 0 | \ No newline at end of file | 39 | \ No newline at end of file |