Commit 71c4c77dfe057fed54834481f7ca655607555c3f

Authored by Administrator
2 parents e469a7bd 1412c23a

Merge remote-tracking branch 'origin/master'

backend/models/UploadFileParsingForm.php
@@ -98,5 +98,4 @@ class UploadFileParsingForm extends Model @@ -98,5 +98,4 @@ class UploadFileParsingForm extends Model
98 } 98 }
99 99
100 100
101 -  
102 } 101 }
103 \ No newline at end of file 102 \ No newline at end of file
common/models/GoodsView.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "{{%goods_view}}".
  9 + *
  10 + * @property string $name
  11 + * @property string $brand
  12 + * @property string $box
  13 + * @property string $add_box
  14 + * @property string $importer_id
  15 + * @property string $importer_name
  16 + * @property double $rate
  17 + * @property string $currency_id
  18 + * @property string $delivery
  19 + * @property string $description
  20 + * @property string $article
  21 + * @property string $ID
  22 + * @property string $image
  23 + * @property string $tecdoc_id
  24 + * @property double $price
  25 + * @property string $brand_id
  26 +
  27 + */
  28 +class GoodsView extends \backend\components\base\BaseActiveRecord
  29 +{
  30 + /**
  31 + * @inheritdoc
  32 + */
  33 + public static function tableName()
  34 + {
  35 + return '{{%goods_view}}';
  36 + }
  37 +
  38 + /**
  39 + * @inheritdoc
  40 + */
  41 + public function rules()
  42 + {
  43 + return [
  44 + [['name', 'brand', 'box', 'importer_id', 'importer_name', 'rate', 'delivery', 'price'], 'required'],
  45 + [['box', 'add_box', 'importer_id', 'currency_id', 'ID', 'tecdoc_id', 'brand_id'], 'integer'],
  46 + [['rate', 'price'], 'number'],
  47 + [['name', 'brand'], 'string', 'max' => 100],
  48 + [['importer_name', 'delivery'], 'string', 'max' => 254],
  49 + [['description'], 'string', 'max' => 255],
  50 + [['article'], 'string', 'max' => 150],
  51 + [['image'], 'string', 'max' => 229]
  52 + ];
  53 + }
  54 +
  55 + /**
  56 + * @return string
  57 + */
  58 + public function getOutputPrice()
  59 + {
  60 + $price_margin_id = Yii::$app->session->getFlash('price_margin_id',1);
  61 + $price_currency_id = Yii::$app->session->getFlash('price_currency_id',1);
  62 +
  63 + $koef = Margins::getDb()->cache( function ($db) use ($price_margin_id) {
  64 + return (float) Margins::findOne($price_margin_id)->koef;
  65 + });
  66 +
  67 + $rate = Currency::getDb()->cache( function ($db) use ($price_currency_id) {
  68 + return (float) Currency::findOne($price_currency_id)->rate;
  69 + });
  70 +
  71 + if(!$rate)
  72 + $rate = 1; // если 0, то 1
  73 +
  74 + return round($this->price * ($this->rate/$rate) * $koef, 2);
  75 + }
  76 +
  77 +
  78 + public function attributeLabels()
  79 + {
  80 + return [
  81 + 'name' => 'Name',
  82 + 'brand' => 'Brand',
  83 + 'box' => 'Box',
  84 + 'add_box' => 'Add Box',
  85 + 'importer_id' => 'Importer ID',
  86 + 'importer_name' => 'Importer Name',
  87 + 'rate' => 'Rate',
  88 + 'currency_id' => 'Currency ID',
  89 + 'delivery' => 'Delivery',
  90 + 'description' => 'Description',
  91 + 'article' => 'Article',
  92 + 'ID' => 'ID',
  93 + 'image' => 'Image',
  94 + 'tecdoc_id' => 'Tecdoc ID',
  95 + 'price' => 'Price',
  96 + 'brand_id' => 'Brand ID',
  97 + ];
  98 + }
  99 +}
common/models/GoodsViewSearch.php 0 → 100644
  1 +<?php
  2 +
  3 +namespace common\models;
  4 +
  5 +use Yii;
  6 +use yii\base\Model;
  7 +use yii\data\ActiveDataProvider;
  8 +use common\models\GoodsView;
  9 +
  10 +/**
  11 + * GoodsViewSearch represents the model behind the search form about `common\models\GoodsView`.
  12 + */
  13 +class GoodsViewSearch extends GoodsView
  14 +{
  15 + /**
  16 + * @inheritdoc
  17 + */
  18 + public function rules()
  19 + {
  20 + return [
  21 + [['name', 'brand', 'price_currency_id', 'price_margin_id'], 'safe'],
  22 + ];
  23 + }
  24 +
  25 + /**
  26 + * @inheritdoc
  27 + */
  28 + public function scenarios()
  29 + {
  30 + // bypass scenarios() implementation in the parent class
  31 + return Model::scenarios();
  32 + }
  33 +
  34 + /**
  35 + * Creates data provider instance with search query applied
  36 + *
  37 + * @param array $params
  38 + *
  39 + * @return ActiveDataProvider
  40 + */
  41 + public function search($params)
  42 + {
  43 + $query = GoodsView::find();
  44 +
  45 +// $pagination = [
  46 +// 'pageSize' => 20,
  47 +// ];
  48 +
  49 +
  50 + $this->load($params);
  51 +
  52 + if ( !$this->validate() ) {
  53 + $query->where('0=1');
  54 + }
  55 +
  56 + $query->andFilterWhere([
  57 + 'name' => $this->name,
  58 + 'brand' => $this->brand,
  59 + ]);
  60 +
  61 + $query->andWhere(['or', 'box > 0', 'add_box > 0']);
  62 +
  63 + $dataProvider = new ActiveDataProvider([
  64 + 'query' => $query,
  65 + 'key' => 'article',
  66 + 'sort' => [
  67 + 'attributes' => [
  68 + 'box',
  69 + 'delivery',
  70 + 'price'
  71 + ],
  72 + ],
  73 +
  74 + ]);
  75 +
  76 + return $dataProvider;
  77 + }
  78 + public function searchCrosses($params)
  79 + {
  80 + $query = GoodsView::find()->innerJoin('w_details_crosses', '`w_details_crosses`.`CROSS_ARTICLE` = `name` and `w_details_crosses`.`CROSS_BRAND` = w_goods_view.`brand`');
  81 +
  82 +// $pagination = [
  83 +// 'pageSize' => 20,
  84 +// ];
  85 +
  86 +
  87 + $this->load($params);
  88 +
  89 + if ( !$this->validate() ) {
  90 + $query->where('0=1');
  91 + }
  92 +
  93 + $query->andFilterWhere([
  94 + 'w_details_crosses.ARTICLE' => $this->name,
  95 + 'w_details_crosses.BRAND' => $this->brand,
  96 + ]);
  97 +
  98 + $query->andWhere(['or', 'box > 0', 'add_box > 0']);
  99 +
  100 + $dataProvider = new ActiveDataProvider([
  101 + 'query' => $query,
  102 + 'key' => 'article',
  103 + 'sort' => [
  104 + 'attributes' => [
  105 + 'box',
  106 + 'delivery',
  107 + 'price'
  108 + ],
  109 + ],
  110 +
  111 + ]);
  112 +
  113 + return $dataProvider;
  114 + }
  115 +}
console/migrations/m151219_103804_goods_view.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\db\Schema;
  4 +use yii\db\Migration;
  5 +
  6 +class m151219_103804_goods_view extends Migration
  7 +{
  8 + public function safeUp()
  9 + {
  10 + $view = <<< MySQL
  11 + create view w_goods_view as
  12 + select straight_join `w_details`.`ARTICLE` as `name`,
  13 + `w_details`.`BRAND` as `brand`,
  14 + `w_details`.`BOX` as `box`,
  15 + `w_details`.`ADD_BOX` as `add_box`,
  16 + `w_details`.`IMPORT_ID` as `importer_id`,
  17 + `w_importers`.`name` as `importer_name`,
  18 + `t`.`rate` as rate,
  19 + `t`.`id` as currency_id,
  20 + `w_importers`.`delivery`,
  21 + if (`w_details_description`.`description` = '',
  22 + if (`w_details_description`.`tecdoc_description` = '',
  23 + `w_details_description`.`supplier_description`,
  24 + `w_details_description`.`tecdoc_description`
  25 + ),
  26 + `w_details_description`.`description`
  27 + ) as `description`,
  28 +
  29 + if (`w_details_description`.`tecdoc_article` = '',
  30 + if (`w_details_description`.`article` = '',
  31 + if (`w_details`.`FULL_ARTICLE` = '',
  32 + `w_details`.`ARTICLE`,
  33 + `w_details`.`FULL_ARTICLE`
  34 + ),
  35 + `w_details_description`.`article`
  36 + ),
  37 + `w_details_description`.`tecdoc_article`
  38 + ) as `article`,
  39 + `w_details`.`ID`,
  40 + if (`w_details_description`.`image` = '',
  41 + if (`w_details_description`.`tecdoc_image` = '',
  42 + '',
  43 + concat('ital_origin/images/tecdoc/big/',`w_details_description`.`tecdoc_image`)
  44 + ),
  45 + concat('ital_origin/images/goods/big/',`w_details_description`.`image`)
  46 + ) as `image`,
  47 + `w_details_description`.`tecdoc_id`,
  48 +
  49 + `w_details`.`PRICE`as `price`,
  50 + `w_brands`.`ID` as `brand_id`
  51 +from `w_details`
  52 + inner join `w_brands` on `w_brands`.`BRAND` = `w_details`.`BRAND`
  53 + left join `w_details_description` on `w_details_description`.`name` = `w_details`.`ARTICLE` and
  54 + `w_details_description`.`brand` = `w_details`.`BRAND`
  55 + inner join `w_importers` on `w_importers`.`id` = `w_details`.`IMPORT_ID` and
  56 + `w_importers`.`active` = 1
  57 + inner join `w_currency` as `t` on `t`.`id` = `w_importers`.`currency_id`;
  58 +MySQL;
  59 +
  60 + $this->execute($view);
  61 +
  62 + }
  63 +
  64 + public function safeDown()
  65 + {
  66 + // вернем все как было
  67 + $drop_view = 'drop view if exists w_goods_view';
  68 +
  69 + $this->execute($drop_view);
  70 +
  71 + }
  72 +}
frontend/controllers/GoodsController.php
@@ -9,8 +9,9 @@ @@ -9,8 +9,9 @@
9 namespace frontend\controllers; 9 namespace frontend\controllers;
10 10
11 use common\components\CustomVarDamp; 11 use common\components\CustomVarDamp;
  12 +use common\models\DetailsCrosses;
  13 +use common\models\GoodsViewSearch;
12 use Yii; 14 use Yii;
13 -use yii\data\SqlDataProvider;  
14 use yii\web\Controller; 15 use yii\web\Controller;
15 16
16 class GoodsController extends Controller { 17 class GoodsController extends Controller {
@@ -18,28 +19,40 @@ class GoodsController extends Controller { @@ -18,28 +19,40 @@ class GoodsController extends Controller {
18 19
19 public function actionIndex($name = '') 20 public function actionIndex($name = '')
20 { 21 {
21 -  
22 - $query = $this->getQuery();  
23 -  
24 - $provider = new SqlDataProvider([  
25 - 'sql' => $query,  
26 - 'pagination' => false,  
27 - 'params' => [':article' => '0092S40090',  
28 - ':brand' => 'BOSCH',  
29 - ':margin_id' => '1',  
30 - ':currency_id' => '1'],  
31 - 'sort' => [  
32 - 'attributes' => [  
33 - 'box',  
34 - 'delivery',  
35 - 'price'  
36 - ],  
37 - ],  
38 - ]); 22 + $arr = ['GoodsViewSearch' => ['name' => '0092S40090',
  23 + 'brand' => 'BOSCH']];
  24 +
  25 + Yii::$app->session->setFlash('price_currency_id', 1);
  26 + Yii::$app->session->setFlash('price_margin_id', 1);
  27 +
  28 + $searchModel = new GoodsViewSearch();
  29 + $goods_provider = $searchModel->searchCrosses($arr);
  30 +
  31 +
  32 +//$cross_arr = DetailsCrosses::find()->select('ARTICLE, BRAND')->where(['CROSS_ARTICLE' => '0092S40090', 'CROSS_BRAND' => 'BOSCH'])->asArray()->all();
  33 +//
  34 +// $article_condition = "'" . implode("','", array_column($cross_arr,'ARTICLE')) . "'";
  35 +// $brand_condition = "'" . implode("','", array_column($cross_arr,'BRAND')) . "'";
  36 +//
  37 +// $crosses_provider = new SqlDataProvider([
  38 +// 'sql' => $query,
  39 +// 'key' => 'article',
  40 +// 'pagination' => false,
  41 +// 'params' => [':article' => $article_condition,
  42 +// ':brand' => $brand_condition],
  43 +// 'sort' => [
  44 +// 'attributes' => [
  45 +// 'box',
  46 +// 'delivery',
  47 +// 'price'
  48 +// ],
  49 +// ],
  50 +// ]);
39 51
40 52
41 return $this->render('index',[ 53 return $this->render('index',[
42 - 'dataProvider' => $provider 54 + 'goods_data_provider' => $goods_provider,
  55 + 'crosses_data_provider' => $goods_provider,
43 ]); 56 ]);
44 } 57 }
45 58
@@ -113,19 +126,19 @@ from `w_details` @@ -113,19 +126,19 @@ from `w_details`
113 `w_details_description`.`brand` = `w_details`.`BRAND` 126 `w_details_description`.`brand` = `w_details`.`BRAND`
114 inner join `w_importers` on `w_importers`.`id` = `w_details`.`IMPORT_ID` and 127 inner join `w_importers` on `w_importers`.`id` = `w_details`.`IMPORT_ID` and
115 `w_importers`.`active` = 1 128 `w_importers`.`active` = 1
116 - inner join `w_margins` on `w_margins`.`id` =:margin_id 129 + inner join `w_margins` on `w_margins`.`id` = @margin
117 left join `w_margins_importers` on `w_margins_importers`.`importer_id` = `w_details`.`IMPORT_ID` and 130 left join `w_margins_importers` on `w_margins_importers`.`importer_id` = `w_details`.`IMPORT_ID` and
118 - `w_margins_importers`.`margin_id`=:margin_id 131 + `w_margins_importers`.`margin_id`= @margin
119 left join `w_margins_groups` on `w_margins_groups`.`importer_id` = `w_details`.`IMPORT_ID` and 132 left join `w_margins_groups` on `w_margins_groups`.`importer_id` = `w_details`.`IMPORT_ID` and
120 - `w_margins_groups`.`margin_id` =:margin_id and 133 + `w_margins_groups`.`margin_id` = @margin and
121 `w_margins_groups`.`group` = `w_details`.`group` 134 `w_margins_groups`.`group` = `w_details`.`group`
122 - inner join `w_currency` on `w_currency`.`id` =:currency_id 135 + inner join `w_currency` on `w_currency`.`id` = @currency
123 inner join `w_currency` as `t` on `t`.`id` = `w_importers`.`currency_id` 136 inner join `w_currency` as `t` on `t`.`id` = `w_importers`.`currency_id`
124 inner join `w_currency` as `default` on `default`.`is_default` = 1 137 inner join `w_currency` as `default` on `default`.`is_default` = 1
125 left join `w_margins_groups` as `input_groups` on `input_groups`.`importer_id` = `w_details`.`IMPORT_ID` and 138 left join `w_margins_groups` as `input_groups` on `input_groups`.`importer_id` = `w_details`.`IMPORT_ID` and
126 `input_groups`.`margin_id` = 8 and 139 `input_groups`.`margin_id` = 8 and
127 `input_groups`.`group` = `w_details`.`group` 140 `input_groups`.`group` = `w_details`.`group`
128 -where `w_details`.`ARTICLE` =:article and `w_details`.`BRAND` =:brand and (`w_details`.`BOX` > 0 or `w_details`.`ADD_BOX`) 141 +where `w_details`.`ARTICLE` In(:article) and `w_details`.`BRAND` In(:brand) and (`w_details`.`BOX` > 0 or `w_details`.`ADD_BOX` > 0)
129 MySQL; 142 MySQL;
130 143
131 return $query; 144 return $query;
frontend/views/goods/index.php
@@ -96,17 +96,18 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -96,17 +96,18 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
96 <td class="medium_width row_name">Номер детали</td> 96 <td class="medium_width row_name">Номер детали</td>
97 <td class="large_width row_name">Описание</td> 97 <td class="large_width row_name">Описание</td>
98 <td class="row_select1 row_name"></td> 98 <td class="row_select1 row_name"></td>
99 - <td class="right_large row_name link_sort arrow_up"><?=$sort->link('box')?></td>  
100 - <td class="right_small row_name link_sort arrow_up"><?=$sort->link('delivery')?></td>  
101 - <td class="right_medium row_name link_sort arrow_up"><?=$sort->link('price')?></td> 99 + <td class="right_large row_name link_sort arrow_up"><?= $sort->link('box') ?></td>
  100 + <td class="right_small row_name link_sort arrow_up"><?= $sort->link('delivery') ?></td>
  101 + <td class="right_medium row_name link_sort arrow_up"><?= $sort->link('price') ?></td>
102 102
103 </tr> 103 </tr>
104 <?php 104 <?php
105 - echo \yii\widgets\ListView::widget( [  
106 - 'dataProvider' => $dataProvider,  
107 - 'itemView'=>'one_item',  
108 - 'layout' => "{items}"  
109 - ] ); 105 + echo \yii\widgets\ListView::widget([
  106 + 'dataProvider' => $goods_data_provider,
  107 + 'itemView' => 'one_item',
  108 + 'summary' => '',
  109 + 'layout' => "{items}"
  110 + ]);
110 ?> 111 ?>
111 112
112 </tbody></table> 113 </tbody></table>
@@ -118,7 +119,8 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -118,7 +119,8 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
118 <p class="currency1 opposite1" id="dollars">грн</p> 119 <p class="currency1 opposite1" id="dollars">грн</p>
119 <p class="currency1 active_button_purple11" id="grivna">$</p> 120 <p class="currency1 active_button_purple11" id="grivna">$</p>
120 <table class="tovar_table" cellspacing="0" cellpadding="0" border="0"> 121 <table class="tovar_table" cellspacing="0" cellpadding="0" border="0">
121 - <tbody><tr class="name"> 122 + <tbody>
  123 + <tr class="name">
122 <td class="small_width row_name">Фирма</td> 124 <td class="small_width row_name">Фирма</td>
123 <td class="medium_width row_name">Номер детали</td> 125 <td class="medium_width row_name">Номер детали</td>
124 <td class="large_width row_name">Описание</td> 126 <td class="large_width row_name">Описание</td>
@@ -128,295 +130,14 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title; @@ -128,295 +130,14 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
128 <td class="right_medium row_name link_sort arrow_up">Цена</td> 130 <td class="right_medium row_name link_sort arrow_up">Цена</td>
129 131
130 </tr> 132 </tr>
131 - <tr>  
132 - <td class="small_width">BOSH</td>  
133 - <td class="medium_width">0 092 S30 120  
134 - <img src="/images/favourite_notactive.png" class="favourite">  
135 - <img src="/images/favourite.png" class="pose">  
136 - </td>  
137 - <td class="large_width">12V 88Ah 740A  
138 - <a href=""><img src="/images/gear.png"></a>  
139 - <a href="" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus."><img src="/images/icon_cam.png"></a>  
140 - </td>  
141 - <td class="right instock">  
142 - <table class="right" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
143 - border-top: 0;">  
144 - <tbody>  
145 -  
146 -  
147 - <tr class="one" style="border-bottom: 0;  
148 - border-top: 0;">  
149 - <td class="row_select" style="border-bottom: 0;  
150 - border-top: 0;">  
151 - <div class="lend-tovar-cart-left">  
152 - <input type="text" class="lend-tovar-cart-number" value="1">  
153 - <div class="arrow-cart-lend-wr">  
154 - <img class="arrow-cart-lend-1" src="/images/arrow-cart-up.png" width="9" height="6" alt="">  
155 - <img class="arrow-cart-lend-2" src="/images/arrow-cart-down1.png" width="9" height="6" alt="">  
156 - </div>  
157 - </div>  
158 - <button class="purple">В корзину</button>  
159 - </td>  
160 - </tr>  
161 - </tbody></table>  
162 -  
163 - </td>  
164 - <td class="right_large instock">3</td>  
165 - <td class="right_small instock">1 дн.</td>  
166 - <td class="right_medium instock">103.75</td>  
167 - </tr>  
168 - <tr>  
169 - <td class="small_width">BOSH</td>  
170 - <td class="medium_width">0 092 S30 120  
171 - <img src="/images/favourite_notactive.png" class="favourite">  
172 - <img src="/images/favourite.png" class="pose">  
173 - </td>  
174 - <td class="large_width">12V 88Ah 740A  
175 - <a href=""><img src="/images/gear.png"></a>  
176 - <a href="" id="go_photo" data-image="/images/acamulator_big.png"><img src="/images/icon_cam.png"></a>  
177 - </td>  
178 - <td class="right " style="border-bottom: 0;  
179 - border-top: 0;">  
180 - <table class="right" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
181 - border-top: 0;">  
182 - <tbody>  
183 -  
184 - <tr class="one" style="border-bottom: 0;  
185 - border-top: 0;">  
186 - <td class="row_select" style="border-top: 0;">  
187 - <div class="lend-tovar-cart-left">  
188 - <input type="text" class="lend-tovar-cart-number" value="1">  
189 - <div class="arrow-cart-lend-wr">  
190 - <img class="arrow-cart-lend-1" src="/images/arrow-cart-up.png" width="9" height="6" alt="">  
191 - <img class="arrow-cart-lend-2" src="/images/arrow-cart-down1.png" width="9" height="6" alt="">  
192 - </div>  
193 - </div>  
194 - <button class="purple">В корзину</button>  
195 - </td>  
196 -  
197 - </tr>  
198 - <tr class="one" style="border-bottom: 0;  
199 - border-top: 0;">  
200 - <td class="row_select" style="border-bottom: 0;  
201 - border-top: 0;">  
202 - <div class="lend-tovar-cart-left">  
203 - <input type="text" class="lend-tovar-cart-number" value="1">  
204 - <div class="arrow-cart-lend-wr">  
205 - <img class="arrow-cart-lend-1" src="/images/arrow-cart-up.png" width="9" height="6" alt="">  
206 - <img class="arrow-cart-lend-2" src="/images/arrow-cart-down1.png" width="9" height="6" alt="">  
207 - </div>  
208 - </div>  
209 - <button class="purple">В корзину</button>  
210 - </td>  
211 - </tr>  
212 - </tbody></table>  
213 -  
214 - </td>  
215 - <td class="right_large">  
216 - <table class="inner_table" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
217 - border-top: 0;">  
218 - <tbody>  
219 - <tr>  
220 - <td>3</td>  
221 - </tr>  
222 - <tr>  
223 - <td>3</td>  
224 - </tr>  
225 - </tbody>  
226 - </table>  
227 -  
228 - </td>  
229 - <td class="right_small">  
230 - <table class="inner_table" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
231 - border-top: 0;">  
232 - <tbody>  
233 - <tr>  
234 - <td>1 дн.</td>  
235 - </tr>  
236 - <tr>  
237 - <td>1 дн.</td>  
238 - </tr>  
239 - </tbody>  
240 - </table>  
241 - </td>  
242 - <td class="right_medium">  
243 - <table class="inner_table" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
244 - border-top: 0;">  
245 - <tbody>  
246 - <tr>  
247 - <td>103.75</td>  
248 - </tr>  
249 - <tr>  
250 - <td>103.75</td>  
251 - </tr>  
252 - </tbody>  
253 - </table>  
254 - </td>  
255 - </tr>  
256 - <tr>  
257 - <td class="small_width">BOSH</td>  
258 - <td class="medium_width">0 092 S30 120  
259 - <img src="/images/favourite_notactive.png" class="favourite">  
260 - <img src="/images/favourite.png" class="pose">  
261 - </td>  
262 - <td class="large_width">12V 88Ah 740A  
263 - <a href=""><img src="/images/gear.png"></a>  
264 - <a href="" id="go_photo" data-image="/images/acamulator_big.png"><img src="/images/icon_cam.png"></a>  
265 - </td>  
266 - <td class="right" style="border-bottom: 0;  
267 - border-top: 0;">  
268 - <table class="right" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
269 - border-top: 0;">  
270 - <tbody>  
271 -  
272 -  
273 - <tr class="one" style="border-bottom: 0;  
274 - border-top: 0;">  
275 - <td class="row_select" style="border-bottom: 0;  
276 - border-top: 0;">  
277 - <div class="lend-tovar-cart-left">  
278 - <input type="text" class="lend-tovar-cart-number" value="1">  
279 - <div class="arrow-cart-lend-wr">  
280 - <img class="arrow-cart-lend-1" src="/images/arrow-cart-up.png" width="9" height="6" alt="">  
281 - <img class="arrow-cart-lend-2" src="/images/arrow-cart-down1.png" width="9" height="6" alt="">  
282 - </div>  
283 - </div>  
284 - <button class="purple">В корзину</button>  
285 - </td>  
286 - </tr>  
287 - </tbody></table>  
288 -  
289 - </td>  
290 - <td class="right_large">3</td>  
291 - <td class="right_small">1 дн.</td>  
292 - <td class="right_medium">103.75</td>  
293 - </tr>  
294 - <tr>  
295 - <td class="small_width">BOSH</td>  
296 - <td class="medium_width">0 092 S30 120  
297 - <img src="/images/favourite_notactive.png" class="favourite">  
298 - <img src="/images/favourite.png" class="pose">  
299 - </td>  
300 - <td class="large_width">12V 88Ah 740A  
301 - <a href=""><img src="/images/gear.png"></a>  
302 - <a href="" id="go_photo" data-image="/images/acamulator_big.png"><img src="/images/icon_cam.png"></a>  
303 - </td>  
304 - <td class="right" style="border-bottom: 0;  
305 - border-top: 0;">  
306 - <table class="right" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
307 - border-top: 0;">  
308 - <tbody>  
309 -  
310 -  
311 - <tr class="one" style="border-bottom: 0;  
312 - border-top: 0;">  
313 -  
314 - <td class="row_select" style="border-bottom: 0;  
315 - border-top: 0;">  
316 - <div class="lend-tovar-cart-left">  
317 - <input type="text" class="lend-tovar-cart-number" value="1">  
318 - <div class="arrow-cart-lend-wr">  
319 - <img class="arrow-cart-lend-1" src="/images/arrow-cart-up.png" width="9" height="6" alt="">  
320 - <img class="arrow-cart-lend-2" src="/images/arrow-cart-down1.png" width="9" height="6" alt="">  
321 - </div>  
322 - </div>  
323 - <button class="purple">В корзину</button>  
324 - </td>  
325 - </tr>  
326 - </tbody></table>  
327 -  
328 - </td>  
329 - <td class="right_large">3</td>  
330 - <td class="right_small">1 дн.</td>  
331 - <td class="right_medium">103.75</td>  
332 - </tr>  
333 - <tr>  
334 - <td class="small_width">BOSH</td>  
335 - <td class="medium_width">0 092 S30 120  
336 - <img src="/images/favourite_notactive.png" class="favourite">  
337 - <img src="/images/favourite.png" class="pose">  
338 - </td>  
339 - <td class="large_width">12V 88Ah 740A  
340 - <a href=""><img src="/images/gear.png"></a>  
341 - <a href="" id="go_photo" data-image="/images/acamulator_big.png"><img src="/images/icon_cam.png"></a>  
342 - </td><td class="right" style="border-bottom: 0;  
343 - border-top: 0;">  
344 - <table class="right" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
345 - border-top: 0;">  
346 - <tbody>  
347 -  
348 - <tr class="one" style="border-bottom: 0;  
349 - border-top: 0;">  
350 - <td class="row_select" style="border-top: 0;">  
351 - <div class="lend-tovar-cart-left">  
352 - <input type="text" class="lend-tovar-cart-number" value="1">  
353 - <div class="arrow-cart-lend-wr">  
354 - <img class="arrow-cart-lend-1" src="/images/arrow-cart-up.png" width="9" height="6" alt="">  
355 - <img class="arrow-cart-lend-2" src="/images/arrow-cart-down1.png" width="9" height="6" alt="">  
356 - </div>  
357 - </div>  
358 - <button class="purple">В корзину</button>  
359 - </td>  
360 -  
361 - </tr>  
362 - <tr class="one" style="border-bottom: 0;  
363 - border-top: 0;">  
364 - <td class="row_select" style="border-bottom: 0;  
365 - border-top: 0;">  
366 - <div class="lend-tovar-cart-left">  
367 - <input type="text" class="lend-tovar-cart-number" value="1">  
368 - <div class="arrow-cart-lend-wr">  
369 - <img class="arrow-cart-lend-1" src="/images/arrow-cart-up.png" width="9" height="6" alt="">  
370 - <img class="arrow-cart-lend-2" src="/images/arrow-cart-down1.png" width="9" height="6" alt="">  
371 - </div>  
372 - </div>  
373 - <button class="purple">В корзину</button>  
374 - </td>  
375 - </tr>  
376 - </tbody></table>  
377 -  
378 - </td>  
379 - <td class="right_large">  
380 - <table class="inner_table" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
381 - border-top: 0;">  
382 - <tbody>  
383 - <tr>  
384 - <td>3</td>  
385 - </tr>  
386 - <tr>  
387 - <td>3</td>  
388 - </tr>  
389 - </tbody>  
390 - </table>  
391 -  
392 - </td>  
393 - <td class="right_small">  
394 - <table class="inner_table" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
395 - border-top: 0;">  
396 - <tbody>  
397 - <tr>  
398 - <td>1 дн.</td>  
399 - </tr>  
400 - <tr>  
401 - <td>1 дн.</td>  
402 - </tr>  
403 - </tbody>  
404 - </table>  
405 - </td>  
406 - <td class="right_medium">  
407 - <table class="inner_table" cellspacing="0" cellpadding="0" border="0" style="border-bottom: 0;  
408 - border-top: 0;">  
409 - <tbody>  
410 - <tr>  
411 - <td>103.75</td>  
412 - </tr>  
413 - <tr>  
414 - <td>103.75</td>  
415 - </tr>  
416 - </tbody>  
417 - </table>  
418 - </td>  
419 - </tr> 133 + <?php
  134 + echo \yii\widgets\ListView::widget([
  135 + 'dataProvider' => $crosses_data_provider,
  136 + 'itemView' => 'one_item',
  137 + 'summary' => '',
  138 + 'layout' => "{items}"
  139 + ]);
  140 + ?>
420 141
421 </tbody></table> 142 </tbody></table>
422 <div class="yellow_stock"> 143 <div class="yellow_stock">
frontend/views/goods/one_item.php
@@ -2,18 +2,49 @@ @@ -2,18 +2,49 @@
2 use \yii\helpers\Html; 2 use \yii\helpers\Html;
3 3
4 $this->registerCssFile('/css/BC2_catalog_zapchasti.css'); 4 $this->registerCssFile('/css/BC2_catalog_zapchasti.css');
  5 +// если товар один и тот же то выводим только цену и кол-во
  6 +// иначе всю информацию
  7 +$new_good = false;
  8 +//в провайдере в качестве ключей установлен - артикул
  9 +$article_arr = $widget->dataProvider->getKeys();
  10 +if ( empty($article_arr[$index - 1]) || $article_arr[$index - 1] != $key )
  11 + // если предыдущий артикул равен текущему, то это тот же товар
  12 + $new_good = true;
5 ?> 13 ?>
6 14
7 - <tr>  
8 - <td class="small_width"><?= $model['brand']?></td>  
9 - <td class="medium_width"><?= $model['article']?> 15 +<?php $this->beginBlock('item_details');
  16 +// выделим отдельно детали товара в блок, для опционального его вывода
  17 +?>
  18 + <tr style="border-bottom: 0">
  19 + <td style="border-bottom: 0" class="small_width"><?= $model->brand?></td>
  20 + <td style="border-bottom: 0" class="medium_width"><?= $model->article?>
10 <img src="/images/favourite_notactive.png" class="favourite"> 21 <img src="/images/favourite_notactive.png" class="favourite">
11 <img src="/images/favourite.png" class="pose"> 22 <img src="/images/favourite.png" class="pose">
12 </td> 23 </td>
13 - <td class="large_width"><?= $model['description']?> 24 + <td style="border-bottom: 0" class="large_width"><?= $model->description?>
14 <a href=""><img src="/images/gear.png"></a> 25 <a href=""><img src="/images/gear.png"></a>
15 <a href="" id="go_photo"><img src="/images/icon_cam.png"></a> 26 <a href="" id="go_photo"><img src="/images/icon_cam.png"></a>
16 </td> 27 </td>
  28 +<?php $this->endBlock(); ?>
  29 +
  30 + <?php $this->beginBlock('empty_details');
  31 + // иначе пустой блок
  32 + ?>
  33 + <tr style="border-bottom: 0;border-top: 0;">
  34 + <td style="border-bottom: 0;border-top: 0;"></td>
  35 + <td style="border-bottom: 0;border-top: 0;"></td>
  36 + <td style="border-bottom: 0;border-top: 0;"></td>
  37 +
  38 + <?php $this->endBlock(); ?>
  39 +
  40 + <?php
  41 + if($new_good){
  42 + echo $this->blocks['item_details'];
  43 + }else{
  44 + echo $this->blocks['empty_details'];
  45 + }
  46 +
  47 + ?>
17 <td class="right"> 48 <td class="right">
18 <table class="tovar_table right" cellspacing="0" cellpadding="0" border="0" style="border: 0;"> 49 <table class="tovar_table right" cellspacing="0" cellpadding="0" border="0" style="border: 0;">
19 <tbody> 50 <tbody>
@@ -37,16 +68,16 @@ $this-&gt;registerCssFile(&#39;/css/BC2_catalog_zapchasti.css&#39;); @@ -37,16 +68,16 @@ $this-&gt;registerCssFile(&#39;/css/BC2_catalog_zapchasti.css&#39;);
37 </td> 68 </td>
38 <td class="right_large"> 69 <td class="right_large">
39 <table class="inner" border='0' style='border-top:0; border-left:0'> 70 <table class="inner" border='0' style='border-top:0; border-left:0'>
40 - <tr border='0' style='border-top:0; border-left:0'><td border='0' style='border-top:0; border-left:0'><?= $model['box'] ?></td></tr> 71 + <tr border='0' style='border-top:0; border-left:0'><td border='0' style='border-top:0; border-left:0'><?= $model->box ?></td></tr>
41 72
42 </table> 73 </table>
43 </td> 74 </td>
44 <td class="right_small"><table class="inner" border='0' style='border-top:0; border-left:0'> 75 <td class="right_small"><table class="inner" border='0' style='border-top:0; border-left:0'>
45 - <tr border='0' style='border-top:0; border-left:0'><td border='0' style='border-top:0; border-left:0'><?= $model['delivery']?> дн.</td></tr> 76 + <tr border='0' style='border-top:0; border-left:0'><td border='0' style='border-top:0; border-left:0'><?= $model->delivery?> дн.</td></tr>
46 77
47 </table></td> 78 </table></td>
48 <td class="right_medium"><table class="inner" border='0' style='border-top:0; border-left:0'> 79 <td class="right_medium"><table class="inner" border='0' style='border-top:0; border-left:0'>
49 - <tr border='0' style='border-top:0; border-left:0'><td border='0' style='border-top:0; border-left:0'><?= $model['price']?></td></tr> 80 + <tr border='0' style='border-top:0; border-left:0'><td border='0' style='border-top:0; border-left:0'><?= $model->outputPrice?></td></tr>
50 81
51 </table></td> 82 </table></td>
52 </tr> 83 </tr>