Commit 1c9309e166175cedfaf5e44bf9263fe071fbce78
1 parent
387be185
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 | 166 | |
| 167 | 167 | |
| 168 | 168 | // 2. запишем полученные данные в таблицу товаров (Details) |
| 169 | - $details_model = new Details('web'); | |
| 169 | + $details_model = new Details(); | |
| 170 | 170 | // проверим все ли обязательные колонки были указаны пользователем |
| 171 | 171 | $details_model->load(['Details' => $data[0]]); |
| 172 | 172 | if ($details_model->validate()) { |
| ... | ... | @@ -176,7 +176,7 @@ class ParserController extends BaseController |
| 176 | 176 | try { |
| 177 | 177 | //@todo add transaction |
| 178 | 178 | // попытаемся вставить данные в БД с апдейтом по ключам |
| 179 | - $details_model->save($data); | |
| 179 | + $details_model->ManualInsert($data); | |
| 180 | 180 | |
| 181 | 181 | // 3. зафиксируем дату начала и конца загрузки в файлах поставщика (для ручной загрузки начало приравниваем time_start и update_date) |
| 182 | 182 | $files_model->time_start = $update_date; |
| ... | ... | @@ -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 | 1 | <?php |
| 2 | -/** | |
| 3 | - * Created by PhpStorm. | |
| 4 | - * User: Cibermag | |
| 5 | - * Date: 15.09.2015 | |
| 6 | - * Time: 16:49 | |
| 7 | - */ | |
| 8 | 2 | |
| 9 | 3 | namespace backend\models; |
| 10 | 4 | |
| 11 | -use yii\base\Model; | |
| 12 | 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 | 25 | const KEY_COLUMN = ['IMPORT_ID','BRAND','ARTICLE']; |
| 16 | 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 | 38 | public function rules() |
| 32 | 39 | { |
| 33 | 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 | 73 | $table_name = self::tableName(); |
| 67 | 74 | $keys_arr = array_keys( $data[0] ); |
| ... | ... | @@ -85,51 +92,10 @@ class Details extends Model{ |
| 85 | 92 | $query_insert = Yii::$app->db->createCommand()->batchInsert($table_name, $keys_arr, $current_batch_array)->sql; |
| 86 | 93 | // добавим фрагмент с апдейтом при дубляже |
| 87 | 94 | $query = "{$query_insert} {$query_update}"; |
| 88 | - // \common\components\CustomVarDamp::dumpAndDie($query); | |
| 95 | + // \common\components\CustomVarDamp::dumpAndDie($query); | |
| 89 | 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 | 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 | 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 | 2 | use yii\helpers\Html; |
| 3 | 3 | use yii\grid\GridView; |
| 4 | 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 | 9 | /* @var $this yii\web\View */ |
| ... | ... | @@ -16,9 +17,17 @@ $this->params['breadcrumbs'][] = $this->title; |
| 16 | 17 | |
| 17 | 18 | <h1><?= Html::encode($this->title) ?></h1> |
| 18 | 19 | |
| 20 | + | |
| 19 | 21 | <?= GridView::widget( ['dataProvider' => $dataProvider, |
| 20 | 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 | 31 | 'label' =>'Поставщик', |
| 23 | 32 | 'value' => function ($data) { |
| 24 | 33 | return '№ ' .$data->id . ' ' . $data->name; |
| ... | ... | @@ -34,13 +43,16 @@ $this->params['breadcrumbs'][] = $this->title; |
| 34 | 43 | // уберем первый символ - там знак "+" |
| 35 | 44 | $quo_days = substr( $quo_days, 1, strlen($quo_days) ); |
| 36 | 45 | $quo_days = (int) $quo_days; |
| 37 | - | |
| 46 | + | |
| 38 | 47 | if($quo_days > 15) |
| 39 | 48 | $quo_days = '>15'; |
| 40 | 49 | |
| 41 | 50 | return $quo_days; |
| 42 | 51 | } |
| 43 | - ] | |
| 52 | + ], | |
| 44 | 53 | ]] );?> |
| 45 | 54 | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 46 | 58 | </div> |
| 47 | 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 | 33 | \ No newline at end of file | ... | ... |
backend/views/layouts/column.php
| ... | ... | @@ -284,7 +284,7 @@ $this->beginContent('@app/views/layouts/main.php'); |
| 284 | 284 | 'items' => [ |
| 285 | 285 | ['label' => "Загрузка файлов", 'url' => ['#'], 'items' => [ |
| 286 | 286 | ['label' => 'Ручная загрузка', 'url' => ['parser/index']], |
| 287 | - ['label' => 'Проверка прайс файлов', 'url' => ['parser/check_price']], | |
| 287 | + ['label' => 'Проверка прайс файлов', 'url' => ['check_price/index']], | |
| 288 | 288 | ], |
| 289 | 289 | ], |
| 290 | 290 | ['label' => 'Управление ролями', 'url' => ['#'], 'items' => [ | ... | ... |