Commit d682b074ca97e04d97e9c4a98c35883d096de70a
1 parent
49293a4b
add view for details in price change form
Showing
7 changed files
with
360 additions
and
107 deletions
Show diff stats
1 | +<?php | ||
2 | +namespace backend\controllers; | ||
3 | + | ||
4 | +use Yii; | ||
5 | +use yii\bootstrap\Modal; | ||
6 | +use yii\data\ActiveDataProvider; | ||
7 | +use yii\filters\AccessControl; | ||
8 | +use backend\components\base\BaseController; | ||
9 | +use yii\filters\VerbFilter; | ||
10 | +use backend\models\UploadFileParsingForm; | ||
11 | +use yii\web\UploadedFile; | ||
12 | +use yii\data\ArrayDataProvider; | ||
13 | +use yii\multiparser\DynamicFormHelper; | ||
14 | +use backend\components\parsers\CustomParserConfigurator; | ||
15 | +use backend\models\Details; | ||
16 | +use backend\models\ImporterFiles; | ||
17 | +use backend\models\Importer; | ||
18 | +use yii\base\ErrorException; | ||
19 | +use yii\db\Query; | ||
20 | + | ||
21 | +use common\components\CustomVarDamp; | ||
22 | + | ||
23 | +/** | ||
24 | + * Parser controller | ||
25 | + */ | ||
26 | +class Check_priceController extends BaseController | ||
27 | +{ | ||
28 | + public $layout = "/column"; | ||
29 | + | ||
30 | + /** | ||
31 | + * @inheritdoc | ||
32 | + */ | ||
33 | + public function behaviors() | ||
34 | + { | ||
35 | + return [ | ||
36 | + 'access' => [ | ||
37 | + 'class' => AccessControl::className(), | ||
38 | + 'rules' => [ | ||
39 | + [ | ||
40 | + 'actions' => ['index', 'view'], | ||
41 | + 'allow' => true, | ||
42 | + 'roles' => ['@'], | ||
43 | + ], | ||
44 | + ], | ||
45 | + ], | ||
46 | +// 'verbs' => [ | ||
47 | +// 'class' => VerbFilter::className(), | ||
48 | +// 'actions' => [ | ||
49 | +// 'logout' => ['post'], | ||
50 | +// ], | ||
51 | +// ], | ||
52 | + ]; | ||
53 | + } | ||
54 | + | ||
55 | + /** | ||
56 | + * @inheritdoc | ||
57 | + */ | ||
58 | + public function actions() | ||
59 | + { | ||
60 | + return [ | ||
61 | + 'error' => [ | ||
62 | + 'class' => 'yii\web\ErrorAction', | ||
63 | + ], | ||
64 | + ]; | ||
65 | + } | ||
66 | + | ||
67 | + | ||
68 | + public function actionIndex() | ||
69 | + { | ||
70 | + | ||
71 | + if(Yii::$app->request->isAjax){ | ||
72 | + CustomVarDamp::dumpAndDie(1); | ||
73 | + } | ||
74 | + | ||
75 | + //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); | ||
76 | + $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); | ||
77 | + | ||
78 | + $provider = new ActiveDataProvider([ | ||
79 | + 'query' => $query, | ||
80 | + 'pagination' => [ | ||
81 | + 'pageSize' => 10, | ||
82 | + ], | ||
83 | + ]); | ||
84 | + return $this->render('index', | ||
85 | + [ | ||
86 | + 'dataProvider' => $provider, | ||
87 | + ]); | ||
88 | + } | ||
89 | + | ||
90 | + | ||
91 | + public function actionView ($id) | ||
92 | + { | ||
93 | + | ||
94 | + | ||
95 | + | ||
96 | + | ||
97 | + $query = Details::find()->where(['IMPORT_ID' => $id])->orderBy(['timestamp' => SORT_DESC]); | ||
98 | + | ||
99 | + $provider = new ActiveDataProvider([ | ||
100 | + 'query' => $query, | ||
101 | + 'pagination' => [ | ||
102 | + 'pageSize' => 16, | ||
103 | + ], | ||
104 | + ]); | ||
105 | + return $this->render('view', | ||
106 | + ['dataProvider' => $provider]); | ||
107 | + } | ||
108 | +} |
backend/controllers/ParserController.php
@@ -166,7 +166,7 @@ class ParserController extends BaseController | @@ -166,7 +166,7 @@ class ParserController extends BaseController | ||
166 | 166 | ||
167 | 167 | ||
168 | // 2. запишем полученные данные в таблицу товаров (Details) | 168 | // 2. запишем полученные данные в таблицу товаров (Details) |
169 | - $details_model = new Details('web'); | 169 | + $details_model = new Details(); |
170 | // проверим все ли обязательные колонки были указаны пользователем | 170 | // проверим все ли обязательные колонки были указаны пользователем |
171 | $details_model->load(['Details' => $data[0]]); | 171 | $details_model->load(['Details' => $data[0]]); |
172 | if ($details_model->validate()) { | 172 | if ($details_model->validate()) { |
@@ -176,7 +176,7 @@ class ParserController extends BaseController | @@ -176,7 +176,7 @@ class ParserController extends BaseController | ||
176 | try { | 176 | try { |
177 | //@todo add transaction | 177 | //@todo add transaction |
178 | // попытаемся вставить данные в БД с апдейтом по ключам | 178 | // попытаемся вставить данные в БД с апдейтом по ключам |
179 | - $details_model->save($data); | 179 | + $details_model->ManualInsert($data); |
180 | 180 | ||
181 | // 3. зафиксируем дату начала и конца загрузки в файлах поставщика (для ручной загрузки начало приравниваем time_start и update_date) | 181 | // 3. зафиксируем дату начала и конца загрузки в файлах поставщика (для ручной загрузки начало приравниваем time_start и update_date) |
182 | $files_model->time_start = $update_date; | 182 | $files_model->time_start = $update_date; |
@@ -219,19 +219,19 @@ class ParserController extends BaseController | @@ -219,19 +219,19 @@ class ParserController extends BaseController | ||
219 | 219 | ||
220 | } | 220 | } |
221 | 221 | ||
222 | - public function actionCheck_price () | ||
223 | - { | ||
224 | - //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); | ||
225 | - $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); | ||
226 | - | ||
227 | - $provider = new ActiveDataProvider([ | ||
228 | - 'query' => $query, | ||
229 | - 'pagination' => [ | ||
230 | - 'pageSize' => 10, | ||
231 | - ], | ||
232 | - ]); | ||
233 | - return $this->render('checkPrice', | ||
234 | - [ | ||
235 | - 'dataProvider' => $provider]); | ||
236 | - } | 222 | +// public function actionCheck_price () |
223 | +// { | ||
224 | +// //$query = (new Query())->select('*')->from('{{%importer_files}}')->where(['not', ['time_end' => null]])->orderBy(['upload_time' => SORT_DESC]); | ||
225 | +// $query = Importer::find()->where(['active' => true])->orderBy(['price_date_update' => SORT_DESC]); | ||
226 | +// | ||
227 | +// $provider = new ActiveDataProvider([ | ||
228 | +// 'query' => $query, | ||
229 | +// 'pagination' => [ | ||
230 | +// 'pageSize' => 10, | ||
231 | +// ], | ||
232 | +// ]); | ||
233 | +// return $this->render('check_price', | ||
234 | +// [ | ||
235 | +// 'dataProvider' => $provider]); | ||
236 | +// } | ||
237 | } | 237 | } |
backend/models/Details.php
1 | <?php | 1 | <?php |
2 | -/** | ||
3 | - * Created by PhpStorm. | ||
4 | - * User: Cibermag | ||
5 | - * Date: 15.09.2015 | ||
6 | - * Time: 16:49 | ||
7 | - */ | ||
8 | 2 | ||
9 | namespace backend\models; | 3 | namespace backend\models; |
10 | 4 | ||
11 | -use yii\base\Model; | ||
12 | use Yii; | 5 | use Yii; |
6 | +use backend\components\base\BaseActiveRecord; | ||
13 | 7 | ||
14 | -class Details extends Model{ | 8 | +/** |
9 | + * This is the model class for table "{{%details}}". | ||
10 | + * | ||
11 | + * @property string $ID | ||
12 | + * @property string $IMPORT_ID | ||
13 | + * @property string $BRAND | ||
14 | + * @property string $ARTICLE | ||
15 | + * @property string $FULL_ARTICLE | ||
16 | + * @property double $PRICE | ||
17 | + * @property string $DESCR | ||
18 | + * @property string $BOX | ||
19 | + * @property string $ADD_BOX | ||
20 | + * @property string $GROUP | ||
21 | + * @property string $timestamp | ||
22 | + */ | ||
23 | +class Details extends BaseActiveRecord | ||
24 | +{ | ||
15 | const KEY_COLUMN = ['IMPORT_ID','BRAND','ARTICLE']; | 25 | const KEY_COLUMN = ['IMPORT_ID','BRAND','ARTICLE']; |
16 | const BATCH = 500; | 26 | const BATCH = 500; |
17 | - | ||
18 | - private $mode; | ||
19 | - | ||
20 | - // обязательные поля модели | ||
21 | - public $BRAND; | ||
22 | - public $ARTICLE; | ||
23 | - public $PRICE; | ||
24 | - public $BOX; | ||
25 | - | ||
26 | - function __construct($mode) | 27 | + /** |
28 | + * @inheritdoc | ||
29 | + */ | ||
30 | + public static function tableName() | ||
27 | { | 31 | { |
28 | - $this->mode = $mode; | 32 | + return '{{%details}}'; |
29 | } | 33 | } |
30 | 34 | ||
35 | + /** | ||
36 | + * @inheritdoc | ||
37 | + */ | ||
31 | public function rules() | 38 | public function rules() |
32 | { | 39 | { |
33 | return [ | 40 | return [ |
34 | - [['BRAND','ARTICLE', 'PRICE', 'BOX'], 'required' ], | 41 | + [[ 'BRAND', 'ARTICLE', 'PRICE', 'DESCR', 'BOX'], 'required'], |
42 | + // [['IMPORT_ID', 'BOX', 'ADD_BOX'], 'integer'], | ||
43 | + [['PRICE'], 'number'], | ||
44 | + [['timestamp'], 'safe'], | ||
45 | + [['BRAND', 'ARTICLE'], 'string', 'max' => 100], | ||
46 | + [['FULL_ARTICLE'], 'string', 'max' => 150], | ||
47 | + [['DESCR', 'GROUP'], 'string', 'max' => 200] | ||
35 | ]; | 48 | ]; |
36 | } | 49 | } |
37 | 50 | ||
38 | - public function formName() | ||
39 | - { | ||
40 | - return 'Details'; | ||
41 | - } | ||
42 | - | ||
43 | - | ||
44 | - public static function tableName() | 51 | + /** |
52 | + * @inheritdoc | ||
53 | + */ | ||
54 | + public function attributeLabels() | ||
45 | { | 55 | { |
46 | - return '{{%details}}'; | 56 | + return [ |
57 | + 'ID' => Yii::t('app', 'ID'), | ||
58 | + 'IMPORT_ID' => Yii::t('app', 'Import ID'), | ||
59 | + 'BRAND' => Yii::t('app', 'Brand'), | ||
60 | + 'ARTICLE' => Yii::t('app', 'Article'), | ||
61 | + 'FULL_ARTICLE' => Yii::t('app', 'Full Article'), | ||
62 | + 'PRICE' => Yii::t('app', 'Price'), | ||
63 | + 'DESCR' => Yii::t('app', 'Descr'), | ||
64 | + 'BOX' => Yii::t('app', 'Box'), | ||
65 | + 'ADD_BOX' => Yii::t('app', 'Add Box'), | ||
66 | + 'GROUP' => Yii::t('app', 'Group'), | ||
67 | + 'timestamp' => Yii::t('app', 'Timestamp'), | ||
68 | + ]; | ||
47 | } | 69 | } |
48 | 70 | ||
49 | -// //@todo вероятно этой функции не место здесь | ||
50 | -// public function prepareData ( $data, $configuration ) | ||
51 | -// { | ||
52 | -// if ( isset($configuration['importer_id']) && $configuration['importer_id']) { | ||
53 | -// $data = \Yii::$app->multiparser->addColumn( $data, 'IMPORT_ID', $configuration['importer_id'] ); | ||
54 | -// } | ||
55 | -// // \common\components\CustomVarDamp::dumpAndDie($data); | ||
56 | -// return $data; | ||
57 | -// } | ||
58 | - | ||
59 | - /** | ||
60 | - * @param $data - двумерный массив данных для записи в таблицу details | ||
61 | - * @throws \yii\db\Exception | ||
62 | - * вставляет записи с апдейтом при дубляже ключей | ||
63 | - */ | ||
64 | - public function save ($data) | 71 | + public function ManualInsert ($data) |
65 | { | 72 | { |
66 | $table_name = self::tableName(); | 73 | $table_name = self::tableName(); |
67 | $keys_arr = array_keys( $data[0] ); | 74 | $keys_arr = array_keys( $data[0] ); |
@@ -85,51 +92,10 @@ class Details extends Model{ | @@ -85,51 +92,10 @@ class Details extends Model{ | ||
85 | $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; | 92 | $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; |
86 | // добавим фрагмент с апдейтом при дубляже | 93 | // добавим фрагмент с апдейтом при дубляже |
87 | $query = "{$query_insert} {$query_update}"; | 94 | $query = "{$query_insert} {$query_update}"; |
88 | - // \common\components\CustomVarDamp::dumpAndDie($query); | 95 | + // \common\components\CustomVarDamp::dumpAndDie($query); |
89 | $res = Yii::$app->db->createCommand($query)->execute(); | 96 | $res = Yii::$app->db->createCommand($query)->execute(); |
90 | 97 | ||
91 | } | 98 | } |
92 | 99 | ||
93 | } | 100 | } |
94 | } | 101 | } |
95 | - | ||
96 | -// | ||
97 | - | ||
98 | -//$q = " INSERT INTO {$table_name} ({$keys_string}) VALUES ("; | ||
99 | - | ||
100 | -//$q .= " on duplicate key update `FULL_ARTICLE` = values (`FULL_ARTICLE`), | ||
101 | -// `PRICE` = values (`PRICE`), | ||
102 | -// `DESCR` = values(`DESCR`), | ||
103 | -// `BOX` = values(`BOX`), | ||
104 | -// `ADD_BOX` = values(`ADD_BOX`), | ||
105 | -// `GROUP` = values(`GROUP`);"; | ||
106 | - | ||
107 | -// INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) | ||
108 | -// ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); | ||
109 | - | ||
110 | - | ||
111 | - | ||
112 | -//INSERT INTO `books` (`UserId`, `BookId`, `Count`) VALUES (13, 1001, 3) | ||
113 | -//ON DUPLICATE KEY UPDATE `Count` = `Count` + VALUES(`Count`); | ||
114 | - | ||
115 | -//$values_string = ''; | ||
116 | -//$keys_arr = array_keys( $data[0] ); | ||
117 | -//$keys_string = implode( ',', $keys_arr); | ||
118 | -//$table_name = self::tableName(); | ||
119 | -//$current_batch = 0; | ||
120 | -//for ($i = $current_batch; $i < $this::BATCH AND $i < count($data); $i++) { | ||
121 | -// $values_string .= '(' . implode( ',', $data[$i]) . '),'; | ||
122 | -//} | ||
123 | -// for ($current_batch = $this::BATCH; $current_batch<count($data); $current_batch + $this::BATCH ) | ||
124 | -//// удалим последнюю запятую | ||
125 | -//$values_string = substr($values_string, 0, strlen($values_string) - 1) . ' '; | ||
126 | -////\common\components\CustomVarDamp::dumpAndDie($values_string); | ||
127 | -//// $query = "INSERT INTO {$table_name}({$keys_string}) VALUES {$values_string}"; | ||
128 | -//// on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
129 | -//$query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql; | ||
130 | -//$query = "{$query_insert} on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
131 | -//$res = Yii::$app->db->createCommand($query)->execute(); | ||
132 | - | ||
133 | - | ||
134 | - | ||
135 | -// Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql execute(); | ||
136 | \ No newline at end of file | 102 | \ No newline at end of file |
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Cibermag | ||
5 | + * Date: 15.09.2015 | ||
6 | + * Time: 16:49 | ||
7 | + */ | ||
8 | + | ||
9 | +namespace backend\models; | ||
10 | + | ||
11 | +use yii\base\Model; | ||
12 | +use Yii; | ||
13 | + | ||
14 | +class Details_old extends Model{ | ||
15 | + const KEY_COLUMN = ['IMPORT_ID','BRAND','ARTICLE']; | ||
16 | + const BATCH = 500; | ||
17 | + | ||
18 | + private $mode; | ||
19 | + | ||
20 | + // обязательные поля модели | ||
21 | + public $BRAND; | ||
22 | + public $ARTICLE; | ||
23 | + public $PRICE; | ||
24 | + public $BOX; | ||
25 | + | ||
26 | + function __construct($mode) | ||
27 | + { | ||
28 | + $this->mode = $mode; | ||
29 | + } | ||
30 | + | ||
31 | + public function rules() | ||
32 | + { | ||
33 | + return [ | ||
34 | + [['BRAND','ARTICLE', 'PRICE', 'BOX'], 'required' ], | ||
35 | + ]; | ||
36 | + } | ||
37 | + | ||
38 | + public function formName() | ||
39 | + { | ||
40 | + return 'Details'; | ||
41 | + } | ||
42 | + | ||
43 | + | ||
44 | + public static function tableName() | ||
45 | + { | ||
46 | + return '{{%details}}'; | ||
47 | + } | ||
48 | + | ||
49 | +// //@todo вероятно этой функции не место здесь | ||
50 | +// public function prepareData ( $data, $configuration ) | ||
51 | +// { | ||
52 | +// if ( isset($configuration['importer_id']) && $configuration['importer_id']) { | ||
53 | +// $data = \Yii::$app->multiparser->addColumn( $data, 'IMPORT_ID', $configuration['importer_id'] ); | ||
54 | +// } | ||
55 | +// // \common\components\CustomVarDamp::dumpAndDie($data); | ||
56 | +// return $data; | ||
57 | +// } | ||
58 | + | ||
59 | + /** | ||
60 | + * @param $data - двумерный массив данных для записи в таблицу details | ||
61 | + * @throws \yii\db\Exception | ||
62 | + * вставляет записи с апдейтом при дубляже ключей | ||
63 | + */ | ||
64 | + public function save ($data) | ||
65 | + { | ||
66 | + $table_name = self::tableName(); | ||
67 | + $keys_arr = array_keys( $data[0] ); | ||
68 | + // найдем те поля которые не являются ключами. Их нужно будет при дубляже апдейтить | ||
69 | + $fields_arr_to_update = array_diff( $keys_arr, $this::KEY_COLUMN ); | ||
70 | + | ||
71 | + $query_update = ' on duplicate key update '; | ||
72 | + foreach ($fields_arr_to_update as $field) { | ||
73 | + $query_update .= "{$field} = values({$field}),"; | ||
74 | + } | ||
75 | + // удалим последнюю запятую | ||
76 | + $query_update = substr($query_update, 0, strlen($query_update) - 1); | ||
77 | + | ||
78 | + // запросы будем выполнять пакетами | ||
79 | + // размер пакета установлен в константе | ||
80 | + // разобъем массив на пакеты и будем их проходить | ||
81 | + $data = array_chunk($data, $this::BATCH ); | ||
82 | + foreach( $data as $current_batch_array ){ | ||
83 | + | ||
84 | + //воспользуемся пакетной вставкой от фреймворка, плюс сразу с экранированием и защитой от инъекций | ||
85 | + $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; | ||
86 | + // добавим фрагмент с апдейтом при дубляже | ||
87 | + $query = "{$query_insert} {$query_update}"; | ||
88 | + // \common\components\CustomVarDamp::dumpAndDie($query); | ||
89 | + $res = Yii::$app->db->createCommand($query)->execute(); | ||
90 | + | ||
91 | + } | ||
92 | + | ||
93 | + } | ||
94 | +} | ||
95 | + | ||
96 | +// | ||
97 | + | ||
98 | +//$q = " INSERT INTO {$table_name} ({$keys_string}) VALUES ("; | ||
99 | + | ||
100 | +//$q .= " on duplicate key update `FULL_ARTICLE` = values (`FULL_ARTICLE`), | ||
101 | +// `PRICE` = values (`PRICE`), | ||
102 | +// `DESCR` = values(`DESCR`), | ||
103 | +// `BOX` = values(`BOX`), | ||
104 | +// `ADD_BOX` = values(`ADD_BOX`), | ||
105 | +// `GROUP` = values(`GROUP`);"; | ||
106 | + | ||
107 | +// INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) | ||
108 | +// ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); | ||
109 | + | ||
110 | + | ||
111 | + | ||
112 | +//INSERT INTO `books` (`UserId`, `BookId`, `Count`) VALUES (13, 1001, 3) | ||
113 | +//ON DUPLICATE KEY UPDATE `Count` = `Count` + VALUES(`Count`); | ||
114 | + | ||
115 | +//$values_string = ''; | ||
116 | +//$keys_arr = array_keys( $data[0] ); | ||
117 | +//$keys_string = implode( ',', $keys_arr); | ||
118 | +//$table_name = self::tableName(); | ||
119 | +//$current_batch = 0; | ||
120 | +//for ($i = $current_batch; $i < $this::BATCH AND $i < count($data); $i++) { | ||
121 | +// $values_string .= '(' . implode( ',', $data[$i]) . '),'; | ||
122 | +//} | ||
123 | +// for ($current_batch = $this::BATCH; $current_batch<count($data); $current_batch + $this::BATCH ) | ||
124 | +//// удалим последнюю запятую | ||
125 | +//$values_string = substr($values_string, 0, strlen($values_string) - 1) . ' '; | ||
126 | +////\common\components\CustomVarDamp::dumpAndDie($values_string); | ||
127 | +//// $query = "INSERT INTO {$table_name}({$keys_string}) VALUES {$values_string}"; | ||
128 | +//// on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
129 | +//$query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql; | ||
130 | +//$query = "{$query_insert} on duplicate key update `PRICE` = values (`PRICE`),`DESCR` = values(`DESCR`),`BOX` = values(`BOX`)"; | ||
131 | +//$res = Yii::$app->db->createCommand($query)->execute(); | ||
132 | + | ||
133 | + | ||
134 | + | ||
135 | +// Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $data)->sql execute(); | ||
0 | \ No newline at end of file | 136 | \ No newline at end of file |
backend/views/parser/checkPrice.php renamed to backend/views/check_price/index.php
@@ -2,7 +2,8 @@ | @@ -2,7 +2,8 @@ | ||
2 | use yii\helpers\Html; | 2 | use yii\helpers\Html; |
3 | use yii\grid\GridView; | 3 | use yii\grid\GridView; |
4 | use yii\grid\SerialColumn; | 4 | use yii\grid\SerialColumn; |
5 | -use yii\grid\DataColumn; | 5 | +use yii\grid\ActionColumn; |
6 | +use yii\widgets\Pjax; | ||
6 | 7 | ||
7 | 8 | ||
8 | /* @var $this yii\web\View */ | 9 | /* @var $this yii\web\View */ |
@@ -16,9 +17,17 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -16,9 +17,17 @@ $this->params['breadcrumbs'][] = $this->title; | ||
16 | 17 | ||
17 | <h1><?= Html::encode($this->title) ?></h1> | 18 | <h1><?= Html::encode($this->title) ?></h1> |
18 | 19 | ||
20 | + | ||
19 | <?= GridView::widget( ['dataProvider' => $dataProvider, | 21 | <?= GridView::widget( ['dataProvider' => $dataProvider, |
20 | 'columns' => [['class' => SerialColumn::className()], | 22 | 'columns' => [['class' => SerialColumn::className()], |
21 | [ | 23 | [ |
24 | + 'class' => ActionColumn::className(), | ||
25 | + 'template'=>'{view}', | ||
26 | + 'contentOptions' => function ($model, $key, $index, $column){ | ||
27 | + return ['data' => ['id' => $model->id, 'date' => $model->price_date_update]]; | ||
28 | + } | ||
29 | + ], | ||
30 | + [ | ||
22 | 'label' =>'Поставщик', | 31 | 'label' =>'Поставщик', |
23 | 'value' => function ($data) { | 32 | 'value' => function ($data) { |
24 | return '№ ' .$data->id . ' ' . $data->name; | 33 | return '№ ' .$data->id . ' ' . $data->name; |
@@ -34,13 +43,16 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -34,13 +43,16 @@ $this->params['breadcrumbs'][] = $this->title; | ||
34 | // уберем первый символ - там знак "+" | 43 | // уберем первый символ - там знак "+" |
35 | $quo_days = substr( $quo_days, 1, strlen($quo_days) ); | 44 | $quo_days = substr( $quo_days, 1, strlen($quo_days) ); |
36 | $quo_days = (int) $quo_days; | 45 | $quo_days = (int) $quo_days; |
37 | - | 46 | + |
38 | if($quo_days > 15) | 47 | if($quo_days > 15) |
39 | $quo_days = '>15'; | 48 | $quo_days = '>15'; |
40 | 49 | ||
41 | return $quo_days; | 50 | return $quo_days; |
42 | } | 51 | } |
43 | - ] | 52 | + ], |
44 | ]] );?> | 53 | ]] );?> |
45 | 54 | ||
55 | + | ||
56 | + | ||
57 | + | ||
46 | </div> | 58 | </div> |
47 | \ No newline at end of file | 59 | \ No newline at end of file |
1 | +<?php | ||
2 | +use yii\helpers\Html; | ||
3 | +use yii\grid\GridView; | ||
4 | +use yii\grid\SerialColumn; | ||
5 | +use yii\bootstrap\Modal; | ||
6 | + | ||
7 | + | ||
8 | +/* @var $this yii\web\View */ | ||
9 | +/* @var $searchModel backend\models\CatalogSearch */ | ||
10 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
11 | + | ||
12 | +$this->title = 'Проверка прайсов'; | ||
13 | +$this->params['breadcrumbs'][] = $this->title; | ||
14 | + | ||
15 | +?> | ||
16 | +<div class="catalog-index"> | ||
17 | + | ||
18 | + <h1><?= Html::encode($this->title) ?></h1> | ||
19 | + | ||
20 | + <?= GridView::widget( ['dataProvider' => $dataProvider, | ||
21 | + | ||
22 | + ] ); | ||
23 | + | ||
24 | + | ||
25 | + ?> | ||
26 | + | ||
27 | + | ||
28 | + | ||
29 | +</div> | ||
30 | +<?php | ||
31 | + | ||
32 | +?> | ||
0 | \ No newline at end of file | 33 | \ No newline at end of file |
backend/views/layouts/column.php
@@ -284,7 +284,7 @@ $this->beginContent('@app/views/layouts/main.php'); | @@ -284,7 +284,7 @@ $this->beginContent('@app/views/layouts/main.php'); | ||
284 | 'items' => [ | 284 | 'items' => [ |
285 | ['label' => "Загрузка файлов", 'url' => ['#'], 'items' => [ | 285 | ['label' => "Загрузка файлов", 'url' => ['#'], 'items' => [ |
286 | ['label' => 'Ручная загрузка', 'url' => ['parser/index']], | 286 | ['label' => 'Ручная загрузка', 'url' => ['parser/index']], |
287 | - ['label' => 'Проверка прайс файлов', 'url' => ['parser/check_price']], | 287 | + ['label' => 'Проверка прайс файлов', 'url' => ['check_price/index']], |
288 | ], | 288 | ], |
289 | ], | 289 | ], |
290 | ['label' => 'Управление ролями', 'url' => ['#'], 'items' => [ | 290 | ['label' => 'Управление ролями', 'url' => ['#'], 'items' => [ |