Commit d8aa85f354b9f82004fbf6de9a4878ae1d15dfa9

Authored by Mihail
1 parent b46a9c6c

add examples for xls and txt parsers

examples/UploadFileParsingForm.php
... ... @@ -23,6 +23,8 @@ class UploadFileParsingForm extends Model
23 23 // 1 - csv template file from data/template.csv
24 24 // 2 - xml template file from data/template.xml
25 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 28 public $file_type = 0;
27 29  
28 30  
... ... @@ -34,11 +36,11 @@ class UploadFileParsingForm extends Model
34 36 }
35 37 JS;
36 38 return [
37   - ['file_type', 'in', 'range' => range( 0, 3 ) ],
  39 + ['file_type', 'in', 'range' => range( 0, 5 ) ],
38 40 ['file', 'required', 'when' => function(){
39 41 return !$this->file_type;
40 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 44 ['file_path', 'safe'],
43 45  
44 46 ];
... ...
examples/_data/template.txt 0 → 100644
  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 +
... ...
examples/_data/template.xls 0 → 100644
No preview for this file type
examples/config.php
... ... @@ -86,7 +86,7 @@ return [
86 86 ],
87 87 'template' =>
88 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 90 'keys' => [
91 91 0 => 'Original',
92 92 1 => 'Replacement',
... ... @@ -101,5 +101,63 @@ return [
101 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  
... ...
examples/views/index.php 0 → 100644
  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 +
... ...
examples/views/results.php 0 → 100644
  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 39 \ No newline at end of file
... ...