Commit 031b4e2bb9891a9e90a6c93665743257700f0fa0

Authored by Anastasia
1 parent 77d77c34

filter

controllers/VariantCountController.php 0 → 100644
  1 +<?php
  2 +
  3 + namespace artbox\stock\controllers;
  4 +
  5 + use artbox\stock\models\Shop;
  6 + use Yii;
  7 + use artbox\stock\models\VariantToShop;
  8 + use yii\data\ActiveDataProvider;
  9 + use yii\web\Controller;
  10 + use yii\web\NotFoundHttpException;
  11 + use yii\filters\VerbFilter;
  12 + use artbox\catalog\models\Variant;
  13 + use yii\web\Response;
  14 +
  15 + /**
  16 + * VariantCountController implements the CRUD actions for VariantToShop model.
  17 + */
  18 + class VariantCountController extends Controller
  19 + {
  20 + /**
  21 + * @inheritdoc
  22 + */
  23 + public function getViewPath()
  24 + {
  25 + return '@artbox/stock/views/variant-count';
  26 + }
  27 + public function behaviors()
  28 + {
  29 + return [
  30 + 'verbs' => [
  31 + 'class' => VerbFilter::className(),
  32 + 'actions' => [
  33 + 'delete' => [ 'POST' ],
  34 + ],
  35 + ],
  36 + ];
  37 + }
  38 +
  39 + /**
  40 + * Lists all VariantToShop models.
  41 + * @param int|null $shop_id
  42 + * @return mixed
  43 + */
  44 + public function actionIndex($shop_id)
  45 + {
  46 + $dataProvider = new ActiveDataProvider(
  47 + [
  48 + 'query' => VariantToShop::find()
  49 + ->with(
  50 + [
  51 + 'variant',
  52 + 'variant.lang',
  53 + 'shop',
  54 + 'shop.lang',
  55 + ]
  56 + )
  57 + ->where([ 'shop_id' => $shop_id ]),
  58 + ]
  59 + );
  60 +
  61 + return $this->render(
  62 + 'index',
  63 + [
  64 + 'dataProvider' => $dataProvider,
  65 + 'shop_id' => $shop_id,
  66 + ]
  67 + );
  68 + }
  69 +
  70 + /**
  71 + * Displays a single VariantToShop model.
  72 + *
  73 + * @param integer $variant_id
  74 + * @param integer $shop_id
  75 + *
  76 + * @return mixed
  77 + */
  78 + public function actionView($variant_id, $shop_id)
  79 + {
  80 + return $this->render(
  81 + 'view',
  82 + [
  83 + 'model' => $this->findModel($variant_id, $shop_id),
  84 + ]
  85 + );
  86 + }
  87 +
  88 + /**
  89 + * Creates a new VariantToShop model.
  90 + * If creation is successful, the browser will be redirected to the 'view' page.
  91 + * @param int|null $shop_id
  92 + * @return mixed
  93 + */
  94 + public function actionCreate($shop_id)
  95 + {
  96 + $model = new VariantToShop();
  97 + $shop = Shop::find()
  98 + ->with([ 'lang' ])
  99 + ->where([ 'id' => $shop_id ])
  100 + ->one();
  101 + if ($model->load(Yii::$app->request->post()) && $model->save()) {
  102 + return $this->redirect(
  103 + [
  104 + 'view',
  105 + 'variant_id' => $model->variant_id,
  106 + 'shop_id' => $model->shop_id,
  107 + ]
  108 + );
  109 + } else {
  110 + return $this->render(
  111 + 'create',
  112 + [
  113 + 'model' => $model,
  114 + 'shop' => $shop,
  115 + ]
  116 + );
  117 + }
  118 + }
  119 +
  120 + /**
  121 + * Updates an existing VariantToShop model.
  122 + * If update is successful, the browser will be redirected to the 'view' page.
  123 + *
  124 + * @param integer $variant_id
  125 + * @param integer $shop_id
  126 + *
  127 + * @return mixed
  128 + */
  129 + public function actionUpdate($variant_id, $shop_id)
  130 + {
  131 + $model = $this->findModel($variant_id, $shop_id);
  132 + $shop = Shop::find()
  133 + ->with([ 'lang' ])
  134 + ->where([ 'id' => $shop_id ])
  135 + ->one();
  136 + if ($model->load(Yii::$app->request->post()) && $model->save()) {
  137 + return $this->redirect(
  138 + [
  139 + 'view',
  140 + 'variant_id' => $model->variant_id,
  141 + 'shop_id' => $model->shop_id,
  142 + ]
  143 + );
  144 + } else {
  145 + return $this->render(
  146 + 'update',
  147 + [
  148 + 'model' => $model,
  149 + 'shop' => $shop,
  150 + ]
  151 + );
  152 + }
  153 + }
  154 +
  155 + /**
  156 + * Deletes an existing VariantToShop model.
  157 + * If deletion is successful, the browser will be redirected to the 'index' page.
  158 + *
  159 + * @param integer $variant_id
  160 + * @param integer $shop_id
  161 + *
  162 + * @return mixed
  163 + */
  164 + public function actionDelete($variant_id, $shop_id)
  165 + {
  166 + $this->findModel($variant_id, $shop_id)
  167 + ->delete();
  168 +
  169 + return $this->redirect([ 'index' ]);
  170 + }
  171 +
  172 + /**
  173 + * Finds the VariantToShop model based on its primary key value.
  174 + * If the model is not found, a 404 HTTP exception will be thrown.
  175 + *
  176 + * @param integer $variant_id
  177 + * @param integer $shop_id
  178 + *
  179 + * @return VariantToShop the loaded model
  180 + * @throws NotFoundHttpException if the model cannot be found
  181 + */
  182 + protected function findModel($variant_id, $shop_id)
  183 + {
  184 + if (( $model = VariantToShop::findOne(
  185 + [
  186 + 'variant_id' => $variant_id,
  187 + 'shop_id' => $shop_id,
  188 + ]
  189 + ) ) !== null
  190 + ) {
  191 + return $model;
  192 + } else {
  193 + throw new NotFoundHttpException('The requested page does not exist.');
  194 + }
  195 + }
  196 +
  197 + /**
  198 + * @param string $q
  199 + * @param int|null $shop_id
  200 + *
  201 + * @return array
  202 + */
  203 +
  204 + public function actionList(string $q = null, $shop_id)
  205 + {
  206 + \Yii::$app->response->format = Response::FORMAT_JSON;
  207 + $out = [
  208 + 'results' => [
  209 + 'id' => '',
  210 + 'text' => '',
  211 + ],
  212 + ];
  213 + if (!is_null($q)) {
  214 + $not = VariantToShop::find()
  215 + ->select('variant_id')
  216 + ->where([ 'shop_id' => $shop_id ]);
  217 + $out[ 'results' ] = Variant::find()
  218 + ->select(
  219 + [
  220 + 'variant.id as id',
  221 + 'variant.sku as text',
  222 + ]
  223 + )
  224 + ->where(
  225 + [
  226 + 'like',
  227 + 'variant.sku',
  228 + $q,
  229 + ]
  230 + )
  231 + ->where(
  232 + [
  233 + 'NOT IN',
  234 + 'variant.id',
  235 + $not,
  236 + ]
  237 + )
  238 + ->limit(20)
  239 + ->asArray()
  240 + ->all();
  241 + }
  242 + return $out;
  243 + }
  244 + }
... ...
messages/ru/stock.php
1 1 <?php
2 2 return [
3   - 'Cities' => 'Города',
4   - 'Shops' => 'Магазины/склады',
5   - 'Title' => 'Название',
6   - 'Sort' => 'Сортировка',
7   - 'Status' => 'Статус',
8   - 'Description' => 'Описание',
9   - 'Create City' => 'Добавить город',
10   - 'Alias' => 'Алиас',
11   - 'Update' => 'Обновить',
12   - 'Address' => 'Адрес',
13   - 'Create Shop' => 'Добавить магазин',
14   - 'Mode' => "Расписание работы",
15   - 'Delete' => 'Удалить',
16   - 'Create' => "Добавить",
17   - 'Mon' => 'Пн',
18   - 'Tue' => 'Вт',
19   - 'Wed' => 'Ср',
20   - 'Thu' => 'Чт',
21   - 'Fri' => 'Пт',
22   - 'Sat' => 'Сб',
23   - 'Sun' => 'Вс',
  3 + 'Cities' => 'Города',
  4 + 'Shops' => 'Магазины/склады',
  5 + 'Title' => 'Название',
  6 + 'Sort' => 'Сортировка',
  7 + 'Status' => 'Статус',
  8 + 'Description' => 'Описание',
  9 + 'Create City' => 'Добавить город',
  10 + 'Alias' => 'Алиас',
  11 + 'Update' => 'Обновить',
  12 + 'Address' => 'Адрес',
  13 + 'Create Shop' => 'Добавить магазин',
  14 + 'Mode' => "Расписание работы",
  15 + 'Delete' => 'Удалить',
  16 + 'Create' => "Добавить",
  17 + 'Mon' => 'Пн',
  18 + 'Tue' => 'Вт',
  19 + 'Wed' => 'Ср',
  20 + 'Thu' => 'Чт',
  21 + 'Fri' => 'Пт',
  22 + 'Sat' => 'Сб',
  23 + 'Sun' => 'Вс',
  24 + 'Import' => 'Импорт',
  25 + 'Variant Count' => 'Количество товаров',
  26 + 'Sku' => 'Код товара',
  27 + 'Count' => 'Количество',
  28 + 'Add Product' => 'Добавить товар',
  29 + 'Update Count' => 'Обновить количество',
24 30 ]
25 31 ?>
26 32 \ No newline at end of file
... ...
migrations/m170727_081025_create_variant_to_shop_table.php 0 → 100644
  1 +<?php
  2 +
  3 +use yii\db\Migration;
  4 +
  5 +/**
  6 + * Handles the creation of table `variant_to_shop`.
  7 + */
  8 +class m170727_081025_create_variant_to_shop_table extends Migration
  9 +{
  10 + /**
  11 + * @inheritdoc
  12 + */
  13 + public function up()
  14 + {
  15 + $this->createTable('variant_to_shop', [
  16 + 'variant_id' => $this->integer()
  17 + ->notNull(),
  18 + 'shop_id' => $this->integer()
  19 + ->notNull(),
  20 + 'count' => $this->integer()->defaultValue(0),
  21 + ]);
  22 +
  23 +
  24 + $this->addPrimaryKey(
  25 + 'variant_to_shop_pk',
  26 + 'variant_to_shop',
  27 + [
  28 + 'variant_id',
  29 + 'shop_id',
  30 + ]
  31 + );
  32 +
  33 + $this->addForeignKey(
  34 + 'variant_to_shop_variant_id_to_variant_fk',
  35 + 'variant_to_shop',
  36 + 'variant_id',
  37 + 'variant',
  38 + 'id',
  39 + 'CASCADE',
  40 + 'CASCADE'
  41 + );
  42 +
  43 + $this->addForeignKey(
  44 + 'variant_to_shop_shop_id_to_shop_fk',
  45 + 'variant_to_shop',
  46 + 'shop_id',
  47 + 'shop',
  48 + 'id',
  49 + 'CASCADE',
  50 + 'CASCADE'
  51 + );
  52 + }
  53 +
  54 + /**
  55 + * @inheritdoc
  56 + */
  57 + public function down()
  58 + {
  59 + $this->dropForeignKey(
  60 + 'variant_to_shop_variant_id_to_variant_fk',
  61 + 'variant_to_shop'
  62 + );
  63 + $this->dropForeignKey(
  64 + 'variant_to_shop_shop_id_to_shop_fk',
  65 + 'variant_to_shop'
  66 + );
  67 + $this->dropTable('variant_to_shop');
  68 +
  69 + }
  70 +}
... ...
models/VariantToShop.php 0 → 100644
  1 +<?php
  2 +
  3 + namespace artbox\stock\models;
  4 +
  5 + use yii\db\ActiveRecord;
  6 + use artbox\catalog\models\Variant;
  7 +
  8 + /**
  9 + * This is the model class for table "variant_to_shop".
  10 + *
  11 + * @property integer $variant_id
  12 + * @property integer $shop_id
  13 + * @property integer $count
  14 + * @property Shop $shop
  15 + * @property Variant $variant
  16 + */
  17 + class VariantToShop extends ActiveRecord
  18 + {
  19 + /**
  20 + * @inheritdoc
  21 + */
  22 + public static function tableName()
  23 + {
  24 + return 'variant_to_shop';
  25 + }
  26 +
  27 + /**
  28 + * @inheritdoc
  29 + */
  30 + public function rules()
  31 + {
  32 + return [
  33 + [
  34 + [
  35 + 'variant_id',
  36 + 'shop_id',
  37 + ],
  38 + 'required',
  39 + ],
  40 + [
  41 + [
  42 + 'variant_id',
  43 + 'shop_id',
  44 + 'count',
  45 + ],
  46 + 'integer',
  47 + ],
  48 + [
  49 + [ 'shop_id' ],
  50 + 'exist',
  51 + 'skipOnError' => true,
  52 + 'targetClass' => Shop::className(),
  53 + 'targetAttribute' => [ 'shop_id' => 'id' ],
  54 + ],
  55 + [
  56 + [ 'variant_id' ],
  57 + 'exist',
  58 + 'skipOnError' => true,
  59 + 'targetClass' => Variant::className(),
  60 + 'targetAttribute' => [ 'variant_id' => 'id' ],
  61 + ],
  62 + ];
  63 + }
  64 +
  65 + /**
  66 + * @inheritdoc
  67 + */
  68 + public function attributeLabels()
  69 + {
  70 + return [
  71 + 'variant_id' => 'Variant ID',
  72 + 'shop_id' => 'Shop ID',
  73 + 'count' => \Yii::t('stock', 'Count'),
  74 + ];
  75 + }
  76 +
  77 + /**
  78 + * @return \yii\db\ActiveQuery
  79 + */
  80 + public function getShop()
  81 + {
  82 + return $this->hasOne(Shop::className(), [ 'id' => 'shop_id' ]);
  83 + }
  84 +
  85 + /**
  86 + * @return \yii\db\ActiveQuery
  87 + */
  88 + public function getVariant()
  89 + {
  90 + return $this->hasOne(Variant::className(), [ 'id' => 'variant_id' ]);
  91 + }
  92 +
  93 + }
... ...
views/shop/index.php
... ... @@ -3,6 +3,8 @@
3 3 use yii\helpers\Html;
4 4 use yii\grid\GridView;
5 5 use yiister\gentelella\widgets\Panel;
  6 + use yii\helpers\Url;
  7 +
6 8  
7 9 /* @var $this yii\web\View */
8 10 /* @var $dataProvider yii\data\ActiveDataProvider */
... ... @@ -37,7 +39,18 @@
37 39 'sort',
38 40 'status:boolean',
39 41  
40   - [ 'class' => 'yii\grid\ActionColumn' ],
  42 + [ 'class' => 'yii\grid\ActionColumn',
  43 + 'template' => '{view} {update} {delete}{link}',
  44 + 'buttons' => [
  45 + 'link' => function ($url,$model,$key) {
  46 + return Html::a('Товары', Url::to([
  47 + '/variant-count/index',
  48 + 'shop_id' => $model->id
  49 + ]));
  50 + },
  51 + 'icon' => 'gift',
  52 + ],
  53 + ],
41 54 ],
42 55 ]
43 56 ); ?>
... ...
views/variant-count/_form.php 0 → 100644
  1 +<?php
  2 +
  3 + use yii\helpers\Html;
  4 + use yii\widgets\ActiveForm;
  5 + use kartik\select2\Select2;
  6 + use yii\helpers\Url;
  7 + use yii\web\JsExpression;
  8 +
  9 + /* @var $this yii\web\View */
  10 + /* @var $model artbox\stock\models\VariantToShop */
  11 + /* @var $form yii\widgets\ActiveForm */
  12 + /* @var $shop artbox\stock\models\Shop */
  13 +?>
  14 +
  15 +<div class="variant-to-shop-form">
  16 +
  17 + <?php $form = ActiveForm::begin(); ?>
  18 +
  19 + <?= Select2::widget(
  20 + [
  21 + 'name' => 'VariantToShop[variant_id]',
  22 + 'value' => ( isset($model->variant->id) ) ? array_keys([ $model->variant->id ]) : [],
  23 + 'data' => ( isset($model->variant->sku) ) ? [ $model->variant->sku ] : [],
  24 + 'options' => [
  25 + 'placeholder' => 'Выберите товар по коду ...',
  26 + 'multiple' => false,
  27 + 'disabled' => ( isset($model->variant->id) and isset($model->variant->sku) ) ? true : false,
  28 + ],
  29 + 'pluginOptions' => [
  30 + 'allowClear' => true,
  31 + 'ajax' => [
  32 + 'url' => Url::to([ '/variant-count/list' ]),
  33 + 'dataType' => 'json',
  34 + 'data' => new JsExpression(
  35 + 'function(params) {
  36 + return {
  37 + q:params.term,shop_id:' . $shop->id . '
  38 + };
  39 + }'
  40 + ),
  41 + ],
  42 + 'escapeMarkup' => new JsExpression(
  43 + 'function (markup) {
  44 + return markup;
  45 + }'
  46 + ),
  47 + 'templateResult' => new JsExpression(
  48 + 'function (variant) {
  49 + return variant.text;
  50 + }'
  51 + ),
  52 + 'templateSelection' => new JsExpression(
  53 + 'function (variant) {
  54 + return variant.text;
  55 + }'
  56 + ),
  57 + ],
  58 + ]
  59 + ); ?>
  60 +
  61 + <?= $form->field($model, 'shop_id')
  62 + ->hiddenInput(
  63 + [
  64 + 'value' => $shop->id,
  65 + 'id' => 'shop_id',
  66 + ]
  67 + )
  68 + ->label(false); ?>
  69 +
  70 + <?= $form->field($model, 'count')
  71 + ->textInput() ?>
  72 +
  73 + <div class="form-group">
  74 + <?= Html::submitButton(
  75 + $model->isNewRecord ? \Yii::t('stock', 'Create') : \Yii::t('stock', 'Update'),
  76 + [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]
  77 + ) ?>
  78 + </div>
  79 +
  80 + <?php ActiveForm::end(); ?>
  81 +
  82 +</div>
... ...
views/variant-count/create.php 0 → 100644
  1 +<?php
  2 +
  3 + use yii\helpers\Html;
  4 + use yiister\gentelella\widgets\Panel;
  5 +
  6 + /* @var $this yii\web\View */
  7 + /* @var $model artbox\stock\models\VariantToShop */
  8 +
  9 + /* @var $shop \artbox\stock\models\Shop */
  10 + $this->title = \Yii::t('stock', 'Add Product') . ': ' . $shop->lang->address;
  11 + $this->params[ 'breadcrumbs' ][] = [ 'label' => \Yii::t('stock', 'Variant Count'),
  12 + 'url' => [
  13 + 'index',
  14 + 'shop_id' => $shop->id,
  15 + ],
  16 + ];
  17 + $this->params[ 'breadcrumbs' ][] = $this->title;
  18 +?>
  19 +<div class="variant-to-shop-create">
  20 + <?php
  21 + $xPanel = Panel::begin(
  22 + [
  23 + 'header' => \Yii::t('stock', Html::encode($this->title)),
  24 + ]
  25 + );
  26 + ?>
  27 + <h1><?= Html::encode($this->title) ?></h1>
  28 +
  29 + <?= $this->render(
  30 + '_form',
  31 + [
  32 + 'model' => $model,
  33 + 'shop' => $shop,
  34 + ]
  35 + ) ?>
  36 + <?php
  37 + $xPanel::end();
  38 + ?>
  39 +</div>
... ...
views/variant-count/index.php 0 → 100644
  1 +<?php
  2 +
  3 + use yii\helpers\Html;
  4 + use yii\grid\GridView;
  5 + use yiister\gentelella\widgets\Panel;
  6 +
  7 + /* @var $this yii\web\View */
  8 + /* @var $dataProvider yii\data\ActiveDataProvider */
  9 + /* @var $shop_id integer */
  10 +
  11 + $this->title = \Yii::t('stock', 'Variant Count');
  12 + $this->params[ 'breadcrumbs' ][] = $this->title;
  13 +?>
  14 +<div class="variant-to-shop-index">
  15 + <?php
  16 + $xPanel = Panel::begin(
  17 + [
  18 + 'header' => \Yii::t('stock', Html::encode($this->title)),
  19 + ]
  20 + );
  21 + ?>
  22 + <h1><?= Html::encode($this->title) ?></h1>
  23 +
  24 + <p>
  25 + <?= Html::a(\Yii::t('stock', 'Create'),
  26 + [
  27 + 'create',
  28 + 'shop_id' => $shop_id,
  29 + ],
  30 + [ 'class' => 'btn btn-success' ]
  31 + ) ?>
  32 + </p>
  33 + <?= GridView::widget(
  34 + [
  35 + 'dataProvider' => $dataProvider,
  36 + 'columns' => [
  37 + [ 'class' => 'yii\grid\SerialColumn' ],
  38 + [
  39 + 'attribute' => \Yii::t('stock', 'Address'),
  40 + 'value' => 'shop.lang.address',
  41 + ],
  42 + [
  43 + 'attribute' => \Yii::t('stock', 'Sku'),
  44 + 'value' => 'variant.sku',
  45 + ],
  46 + 'count',
  47 +
  48 + [ 'class' => 'yii\grid\ActionColumn' ],
  49 + ],
  50 + ]
  51 + ); ?>
  52 + <?php
  53 + $xPanel::end();
  54 + ?>
  55 +</div>
... ...
views/variant-count/update.php 0 → 100644
  1 +<?php
  2 +
  3 + use yii\helpers\Html;
  4 +
  5 + /* @var $this yii\web\View */
  6 + /* @var $model artbox\stock\models\VariantToShop */
  7 + /* @var $shop artbox\stock\models\Shop */
  8 +
  9 + $this->title = \Yii::t('stock', "Update Count") . ': ' . $model->variant->sku;
  10 + $this->params[ 'breadcrumbs' ][] = [
  11 + 'label' => 'Variant To Shops',
  12 + 'url' => [ 'index' ],
  13 + ];
  14 + $this->params[ 'breadcrumbs' ][] = [
  15 + 'label' => $model->variant->sku,
  16 + 'url' => [
  17 + 'view',
  18 + 'variant_id' => $model->variant_id,
  19 + 'shop_id' => $model->shop_id,
  20 + ],
  21 + ];
  22 + $this->params[ 'breadcrumbs' ][] = \Yii::t('stock', 'Update');
  23 +?>
  24 +<div class="variant-to-shop-update">
  25 +
  26 + <h1><?= Html::encode($this->title) ?></h1>
  27 +
  28 + <?= $this->render(
  29 + '_form',
  30 + [
  31 + 'model' => $model,
  32 + 'shop' => $shop,
  33 + ]
  34 + ) ?>
  35 +
  36 +</div>
... ...
views/variant-count/view.php 0 → 100644
  1 +<?php
  2 +
  3 + use yii\helpers\Html;
  4 + use yii\widgets\DetailView;
  5 + use yiister\gentelella\widgets\Panel;
  6 +
  7 + /* @var $this yii\web\View */
  8 + /* @var $model artbox\stock\models\VariantToShop */
  9 +
  10 + $this->title = $model->variant->sku;
  11 + $this->params[ 'breadcrumbs' ][] = [
  12 + 'label' => \Yii::t('stock', 'Variant Count'),
  13 + 'url' => [
  14 + 'index',
  15 + 'shop_id' => $model->shop_id,
  16 + ],
  17 + ];
  18 + $this->params[ 'breadcrumbs' ][] = $this->title;
  19 +?>
  20 +<div class="variant-to-shop-view">
  21 + <?php
  22 + $xPanel = Panel::begin(
  23 + [
  24 + 'header' => \Yii::t('stock', Html::encode($this->title)),
  25 + ]
  26 + );
  27 + ?>
  28 + <h1><?= Html::encode($this->title) ?></h1>
  29 +
  30 + <p>
  31 + <?= Html::a(
  32 + \Yii::t('stock', 'Update'),
  33 + [
  34 + 'update',
  35 + 'variant_id' => $model->variant_id,
  36 + 'shop_id' => $model->shop_id,
  37 + ],
  38 + [ 'class' => 'btn btn-primary' ]
  39 + ) ?>
  40 + <?= Html::a(
  41 + \Yii::t('stock', 'Delete'),
  42 + [
  43 + 'delete',
  44 + 'variant_id' => $model->variant_id,
  45 + 'shop_id' => $model->shop_id,
  46 + ],
  47 + [
  48 + 'class' => 'btn btn-danger',
  49 + 'data' => [
  50 + 'confirm' => 'Are you sure you want to delete this item?',
  51 + 'method' => 'post',
  52 + ],
  53 + ]
  54 + ) ?>
  55 + </p>
  56 +
  57 + <?= DetailView::widget(
  58 + [
  59 + 'model' => $model,
  60 + 'attributes' => [
  61 + 'variant.sku',
  62 + 'shop.lang.address',
  63 + 'count',
  64 + ],
  65 + ]
  66 + ) ?>
  67 + <?php
  68 + $xPanel::end();
  69 + ?>
  70 +</div>
... ...