]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
ERP-282 Нужно сделать интерфейс настройки магазина
authormarina <m.zozirova@gmail.com>
Thu, 23 Jan 2025 06:56:50 +0000 (09:56 +0300)
committermarina <m.zozirova@gmail.com>
Thu, 23 Jan 2025 06:56:50 +0000 (09:56 +0300)
erp24/controllers/CityStoreParamsController.php
erp24/records/MatrixType.php [new file with mode: 0644]
erp24/records/StoreType.php [new file with mode: 0644]
erp24/views/city-store-params/index.php

index 78436dd6938c46a7aecdafbfc5575eb92195ba2d..c6df86061494532c25ad2ffff1dae84a0204a7ac 100644 (file)
@@ -11,6 +11,7 @@ use yii\web\NotFoundHttpException;
 use yii\filters\VerbFilter;
 use yii\web\Response;
 use yii_app\records\Admin;
+use yii_app\records\AdminGroup;
 use yii_app\records\City;
 use yii_app\records\CityStore;
 use yii_app\records\CityStoreParams;
@@ -18,6 +19,7 @@ use yii_app\records\Cluster;
 use yii_app\records\ClusterAdmin;
 use yii_app\records\StoreCityList;
 use yii_app\records\StoreDynamic;
+use yii_app\records\StoreType;
 
 /**
  * CityStoreParamsController реализует CRUD для модели CityStoreParams.
@@ -171,6 +173,12 @@ class CityStoreParamsController extends Controller
         $freezeArea = CityStoreParams::findOne($storeId)->freeze_area ?? null;
         $freezeVolume = CityStoreParams::findOne($storeId)->freeze_volume ?? null;
 
+        $storeTypeArray = ArrayHelper::map(StoreType::find()->all(), 'id', 'name');
+        $regionArray = ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_REGION]), 'id', 'name');
+        $cityArray = ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_CITY]), 'id', 'name');
+        $districtArray = ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_DISTRICT]), 'id', 'name');
+        $bushChefFloristArray = ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name');
+
         return [
             'success' => true,
             'data' => [
@@ -184,7 +192,12 @@ class CityStoreParamsController extends Controller
                 'storeArea' => $storeArea,
                 'showcaseVolume' => $showcaseVolume,
                 'freezeArea' => $freezeArea,
-                'freezeVolume' => $freezeVolume
+                'freezeVolume' => $freezeVolume,
+                'storeTypeArray' => $storeTypeArray,
+                'regionArray' => $regionArray,
+                'cityArray' => $cityArray,
+                'districtArray' => $districtArray,
+                'bushChefFloristArray' => $bushChefFloristArray,
             ],
         ];
     }
diff --git a/erp24/records/MatrixType.php b/erp24/records/MatrixType.php
new file mode 100644 (file)
index 0000000..98faee6
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+namespace yii_app\records;
+
+use Yii;
+use yii\behaviors\BlameableBehavior;
+use yii\behaviors\TimestampBehavior;
+use yii\db\Expression;
+
+/**
+ * This is the model class for table "erp24.matrix_type".
+ *
+ * @property int $id
+ * @property string $name
+ * @property int $created_by
+ * @property string $created_at
+ * @property int|null $updated_by
+ * @property string|null $updated_at
+ */
+class MatrixType extends \yii\db\ActiveRecord
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return '{{%erp24.matrix_type}}';
+    }
+
+    public function behaviors()
+    {
+        return [
+            [
+                'class' => TimestampBehavior::class,
+                'createdAtAttribute' => 'created_at',
+                'updatedAtAttribute' => 'updated_at',
+                'value' => new Expression('NOW()'),
+            ],
+            [
+                'class' => BlameableBehavior::class,
+                'createdByAttribute' => 'created_by',
+                'updatedByAttribute' => 'updated_by',
+            ],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['name', 'created_by', 'created_at'], 'required'],
+            [['created_by', 'updated_by'], 'integer'],
+            [['created_at', 'updated_at'], 'safe'],
+            [['name'], 'string', 'max' => 255],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'name' => 'Название типа матрицы',
+            'created_by' => 'ИД создателя',
+            'created_at' => 'Дата создания',
+            'updated_by' => 'ИД редактировавшего',
+            'updated_at' => 'Дата обновления',
+        ];
+    }
+}
diff --git a/erp24/records/StoreType.php b/erp24/records/StoreType.php
new file mode 100644 (file)
index 0000000..f08f7e4
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+
+namespace yii_app\records;
+
+use Yii;
+use yii\behaviors\BlameableBehavior;
+use yii\behaviors\TimestampBehavior;
+use yii\db\Expression;
+
+/**
+ * This is the model class for table "erp24.store_type".
+ *
+ * @property int $id
+ * @property string $name
+ * @property int $created_by
+ * @property string $created_at
+ * @property int|null $updated_by
+ * @property string|null $updated_at
+ */
+class StoreType extends \yii\db\ActiveRecord
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return '{{%erp24.store_type}}';
+    }
+
+    public function behaviors()
+    {
+        return [
+            [
+                'class' => TimestampBehavior::class,
+                'createdAtAttribute' => 'created_at',
+                'updatedAtAttribute' => 'updated_at',
+                'value' => new Expression('NOW()'),
+            ],
+            [
+                'class' => BlameableBehavior::class,
+                'createdByAttribute' => 'created_by',
+                'updatedByAttribute' => 'updated_by',
+            ],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['name', 'created_by', 'created_at'], 'required'],
+            [['created_by', 'updated_by'], 'integer'],
+            [['created_at', 'updated_at'], 'safe'],
+            [['name'], 'string', 'max' => 255],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'name' => 'Название типа магазина',
+            'created_by' => 'ИД создателя',
+            'created_at' => 'Дата создания',
+            'updated_by' => 'ИД редактировавшего',
+            'updated_at' => 'Дата обновления',
+        ];
+    }
+}
index 1992e82726d9f65b4151054b8a99e6210836f260..921c2f292ed8cebce99596c9e4ad6b861f79ea25 100644 (file)
@@ -8,6 +8,7 @@ use yii_app\records\Admin;
 use yii_app\records\AdminGroup;
 use yii_app\records\City;
 use yii_app\records\StoreCityList;
+use yii_app\records\StoreType;
 
 /* @var $this yii\web\View */
 /* @var $dataProvider yii\data\ActiveDataProvider */
@@ -17,211 +18,212 @@ $this->params['breadcrumbs'][] = $this->title;
 
 $this->registerJsFile('/js/city-store-params/city-store-params.js', ['position' => \yii\web\View::POS_END]);
 ?>
-    <div class="container mt-4 border-bottom">
-        <div class="row">
-
-            <div class="col-md-2">
-                <div class="card p-3 bg-light shadow-sm">
-                    <?= Html::dropDownList('address_region', null,
-                        ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_REGION]), 'id', 'name'),
-                        ['prompt' => 'Выберите регион', 'class' => 'form-select', 'id' => 'address_region']);
-                    ?>
-                    <?= Html::a('Редактировать', [
-                        Url::to('/store_type')], ['class' => 'd-block mt-2 text-decoration-none']);
-                    ?>
-                </div>
-
+<div class="container mt-4 border-bottom">
+    <div class="row">
+
+        <div class="col-md-2">
+            <div class="card p-3 bg-light shadow-sm">
+                <?= Html::dropDownList('address_region', null,
+                    ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_REGION]), 'id', 'name'),
+                    ['prompt' => 'Выберите регион', 'class' => 'form-select', 'id' => 'address_region']);
+                ?>
+                <?= Html::a('Редактировать', [
+                    Url::to('/store_type')], ['class' => 'd-block mt-2 text-decoration-none']);
+                ?>
             </div>
-            <div class="col-md-2">
-                <div class="card p-3 bg-light shadow-sm">
-                    <?= Html::dropDownList('address_city', null,
-                        ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_CITY]), 'id', 'name'),
-                        ['prompt' => 'Выберите город', 'class' => 'form-select', 'id' => 'address_city']);
-                    ?>
-                </div>
+
+        </div>
+        <div class="col-md-2">
+            <div class="card p-3 bg-light shadow-sm">
+                <?= Html::dropDownList('address_city', null,
+                    ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_CITY]), 'id', 'name'),
+                    ['prompt' => 'Выберите город', 'class' => 'form-select', 'id' => 'address_city']);
+                ?>
             </div>
+        </div>
 
 
-            <div class="col-md-2 border-end border-2">
-                <div class="card p-3 bg-light shadow-sm">
-                    <?= Html::dropDownList('address_district', null,
-                        ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_DISTRICT]), 'id', 'name'),
-                        ['prompt' => 'Выберите район', 'class' => 'form-select', 'id' => 'address_district']);
-                    ?>
-                </div>
+        <div class="col-md-2 border-end border-2">
+            <div class="card p-3 bg-light shadow-sm">
+                <?= Html::dropDownList('address_district', null,
+                    ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_DISTRICT]), 'id', 'name'),
+                    ['prompt' => 'Выберите район', 'class' => 'form-select', 'id' => 'address_district']);
+                ?>
             </div>
+        </div>
 
-            <div class="col-md-2 border-end border-2">
-                <div class="card p-3 bg-light shadow-sm">
-                    <?= Html::dropDownList('store_type', null,
-                        ArrayHelper::map(City::find()->where(['!=', 'region_name', ''])->all(), 'id_region', 'region_name'),
-                        ['prompt' => 'Выберите тип магазина', 'class' => 'form-select', 'id' => 'store_type']);
-                    ?>
-                    <?= Html::a('Редактировать', [\yii\helpers\Url::to('/store_type')], ['class' => 'd-block mt-2 text-decoration-none']); ?>
-                </div>
+        <div class="col-md-2 border-end border-2">
+            <div class="card p-3 bg-light shadow-sm">
+                <?= Html::dropDownList('store_type', null,
+                    ArrayHelper::map(StoreType::find()->all(), 'id', 'name'),
+                    ['prompt' => 'Выберите тип магазина', 'class' => 'form-select', 'id' => 'store_type']);
+                ?>
+                <?= Html::a('Редактировать', [\yii\helpers\Url::to('/store_type')], ['class' => 'd-block mt-2 text-decoration-none']); ?>
             </div>
+        </div>
 
-            <div class="col-md-2 border-end border-2">
-                <div class="card p-3 bg-light shadow-sm">
-                    <?= Html::dropDownList('territorial_manager', null,
-                        ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'),
-                        ['prompt' => 'Выберите территориального управляющего', 'class' => 'form-select', 'id' => 'territorial_manager']);
-                    ?>
-                </div>
+        <div class="col-md-2 border-end border-2">
+            <div class="card p-3 bg-light shadow-sm">
+                <?= Html::dropDownList('territorial_manager', null,
+                    ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'),
+                    ['prompt' => 'Выберите территориального управляющего', 'class' => 'form-select', 'id' => 'territorial_manager']);
+                ?>
             </div>
         </div>
+    </div>
 
-        <div class="row mt-3">
-            <div class="col-md-2"></div>
+    <div class="row mt-3">
+        <div class="col-md-2"></div>
 
-            <div class="col-md-2"></div>
+        <div class="col-md-2"></div>
 
-            <div class="col-md-2"></div>
+        <div class="col-md-2"></div>
 
-            <div class="col-md-2 border-end border-2">
-                <div class="card p-3 bg-light shadow-sm">
-                    <?= Html::dropDownList('bush_chef_florist', null,
-                        ArrayHelper::map(Admin::findAll(['group_id' => \yii_app\records\AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name_full'),
-                        ['prompt' => 'Выберите кустового шеф флориста', 'class' => 'form-select', 'id' => 'bush_chef_florist']);
-                    ?>
-                </div>
+        <div class="col-md-2 border-end border-2">
+            <div class="card p-3 bg-light shadow-sm">
+                <?= Html::dropDownList('bush_chef_florist', null,
+                    ArrayHelper::map(Admin::findAll(['group_id' => \yii_app\records\AdminGroup::GROUP_BUSH_CHEF_FLORIST]), 'id', 'name_full'),
+                    ['prompt' => 'Выберите кустового шеф флориста', 'class' => 'form-select', 'id' => 'bush_chef_florist']);
+                ?>
             </div>
+        </div>
 
-            <div class="col-md-2"></div>
+        <div class="col-md-2"></div>
 
-            <div class="col-md-2 d-flex justify-content-center align-items-center">
-                <div class="card p-45 bg-light shadow-sm w-100">
-                    <?= Html::button('Применить', ['class' => 'btn btn-primary w-100', 'id' => 'apply-button']); ?>
-                </div>
+        <div class="col-md-2 d-flex justify-content-center align-items-center">
+            <div class="card p-45 bg-light shadow-sm w-100">
+                <?= Html::button('Применить', ['class' => 'btn btn-primary w-100', 'id' => 'apply-button']); ?>
             </div>
         </div>
     </div>
-
-
-    <div class="container mt-4">
-        <div class="row">
-            <div class="col-md-3">
-                <div class="form-group">
-                    <?= Html::dropDownList('selected_store', null, [], [
-                        'multiple' => true,
-                        'size' => 16,
-                        'class' => 'form-control',
-                        'id' => 'selected-store',
-                    ]) ?>
-                    <?= Html::button('Редактировать', ['class' => 'btn btn-primary w-100', 'id' => 'edit-button']); ?>
-                </div>
+</div>
+
+
+<div class="container mt-4">
+    <div class="row">
+        <div class="col-md-3">
+            <div class="form-group">
+                <?= Html::dropDownList('selected_store', null, [], [
+                    'multiple' => true,
+                    'size' => 16,
+                    'class' => 'form-control',
+                    'id' => 'selected-store',
+                ]) ?>
+                <?= Html::button('Редактировать', ['class' => 'btn btn-primary w-100 mt-2 py-1', 'id' => 'edit-button']); ?>
             </div>
-            <div class="col-md-9">
-                <div class="form-group">
-                    <div class="row">
-                        <div class="col-md-3 d-flex align-items-center gap-3">
-                            <?= Html::label('Название', null); ?>
-                            <?= Html::tag('span', null, ['id' => 'store-name', 'class' => 'h5']); ?>
-                        </div>
-                        <div class="col-md-4">
-                            <?= Html::dropDownList('store_type', null,
-                                ArrayHelper::map(Admin::findAll(['group_id' => AdminGroup::GROUP_BUSH_DIRECTOR]), 'id', 'name_full'),
-                                ['prompt' => 'Тип магазина', 'class' => 'form-select', 'id' => 'store_type']); ?>
-                            <?= Html::a('Редактировать', [\yii\helpers\Url::to('/store_type')], ['class' => 'd-block mt-2 text-decoration-none']); ?>
-                        </div>
+        </div>
+        <div class="col-md-9">
+            <div class="form-group">
+                <div class="row">
+                    <div class="col-md-3 d-flex align-items-center gap-3">
+                        <?= Html::label('Название', null); ?>
+                        <?= Html::tag('span', null, ['id' => 'store-name', 'class' => 'h5']); ?>
                     </div>
-                    <div class="row">
-                        <div class="col-md-2 py-6">
-                            <?= Html::label('Адрес', null) ?>
-                        </div>
-                        <div class="col-md-3">
-                            <?= Html::label('Регион'); ?>
-                            <?= Html::dropDownList('region', null, [], ['prompt' => 'Регион', 'class' => 'form-select', 'id' => 'region']); ?>
-                        </div>
-                        <div class="col-md-3">
-                            <?= Html::label('Город'); ?>
-                            <?= Html::dropDownList('city', null, [], ['prompt' => 'Город', 'class' => 'form-select', 'id' => 'city']); ?>
-                        </div>
-                        <div class="col-md-3">
-                            <?= Html::label('Район'); ?>
-                            <?= Html::dropDownList('district', null, [], ['prompt' => 'Район', 'class' => 'form-select', 'id' => 'district']); ?>
-                        </div>
+                    <div class="col-md-4">
+                        <?= Html::dropDownList('store_type', null,
+                            ArrayHelper::map(StoreType::find()->all(), 'id', 'name'),
+                            ['prompt' => 'Тип магазина', 'class' => 'form-select', 'id' => 'store_type']); ?>
+                        <?= Html::a('Редактировать', [\yii\helpers\Url::to('/store_type')], ['class' => 'd-block mt-2 text-decoration-none']); ?>
                     </div>
-                    <div class="row">
-                        <div class="col-md-2">
-                            <?= Html::label('Территориально управляющий', null); ?>
-                            <?= Html::a('Редактировать', [Url::to('/store_type')], ['class' => 'd-block mb-5 text-decoration-none']); ?>
-
-                        </div>
-                        <div class="col-md-9">
-                            <?= Html::tag('span', null, ['id' => 'territorial-manager', 'class' => 'h5']); ?>
-                        </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-2 py-6">
+                        <?= Html::label('Адрес', null) ?>
+                    </div>
+                    <div class="col-md-3">
+                        <?= Html::label('Регион'); ?>
+                        <?= Html::dropDownList('region', null, [], ['prompt' => 'Регион', 'class' => 'form-select', 'id' => 'region']); ?>
                     </div>
-                    <div class="row border-bottom">
-                        <div class="col-md-2">
-                            <?= Html::label('КШФ') ?>
-                            <?= Html::a('Редактировать', [Url::to('/store_type')], ['class' => 'd-block mb-5 text-decoration-none']); ?>
+                    <div class="col-md-3">
+                        <?= Html::label('Город'); ?>
+                        <?= Html::dropDownList('city', null, [], ['prompt' => 'Город', 'class' => 'form-select', 'id' => 'city']); ?>
+                    </div>
+                    <div class="col-md-3">
+                        <?= Html::label('Район'); ?>
+                        <?= Html::dropDownList('district', null, [], ['prompt' => 'Район', 'class' => 'form-select', 'id' => 'district']); ?>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-2">
+                        <?= Html::label('Территориально управляющий', null); ?>
+                        <?= Html::a('Редактировать', [Url::to('/store_type')], ['class' => 'd-block mb-5 text-decoration-none']); ?>
 
-                        </div>
-                        <div class="col-md-9">
-                            <?= Html::dropDownList('bush-chef-florist', null, [], ['prompt' => 'Кустовой шеф-флорист', 'class' => 'form-select', 'id' => 'bush-chef-florist']); ?>
-                        </div>
                     </div>
-                    <div class="row">
-                        <div class="col-md-4">
-                            <?= Html::label('Площадь (M2)', null, ['class' => 'form-label']); ?>
-                            <?= Html::input('text', 'store_area', null, [
-                                'id' => 'store-area',
-                                'class' => 'form-control',
-                                'placeholder' => 'Введите число',
-                                'oninput' => 'validateDecimal(this)'
-                            ]); ?>
+                    <div class="col-md-9">
+                        <?= Html::tag('span', null, ['id' => 'territorial-manager', 'class' => 'h5']); ?>
+                    </div>
+                </div>
+                <div class="row border-bottom">
+                    <div class="col-md-2">
+                        <?= Html::label('КШФ') ?>
+                        <?= Html::a('Редактировать', [Url::to('/store_type')], ['class' => 'd-block mb-5 text-decoration-none']); ?>
 
-                            <?= Html::label('Витрина (M3)', null, ['class' => 'form-label']); ?>
-                            <?= Html::input('text', 'showcase_volume', null, [
-                                'id' => 'showcase-volume',
-                                'class' => 'form-control',
-                                'placeholder' => 'Введите число',
-                                'oninput' => 'validateDecimal(this)'
-                            ]); ?>
+                    </div>
+                    <div class="col-md-9">
+                        <?= Html::dropDownList('bush-chef-florist', null, [], ['prompt' => 'Кустовой шеф-флорист', 'class' => 'form-select', 'id' => 'bush-chef-florist']); ?>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-md-4">
+                        <?= Html::label('Площадь (M2)', null, ['class' => 'form-label']); ?>
+                        <?= Html::input('text', 'store_area', null, [
+                            'id' => 'store-area',
+                            'class' => 'form-control',
+                            'placeholder' => 'Введите число',
+                            'oninput' => 'validateDecimal(this)'
+                        ]); ?>
+
+                        <?= Html::label('Витрина (M3)', null, ['class' => 'form-label']); ?>
+                        <?= Html::input('text', 'showcase_volume', null, [
+                            'id' => 'showcase-volume',
+                            'class' => 'form-control',
+                            'placeholder' => 'Введите число',
+                            'oninput' => 'validateDecimal(this)'
+                        ]); ?>
+
+                        <?= Html::label('Холодильник (M2)', null, ['class' => 'form-label']); ?>
+                        <?= Html::input('text', 'freeze_area', null, [
+                            'id' => 'freeze-area',
+                            'class' => 'form-control',
+                            'placeholder' => 'Введите число',
+                            'oninput' => 'validateDecimal(this)'
+                        ]); ?>
+
+                        <?= Html::label('Холодильник (M3)', null, ['class' => 'form-label']); ?>
+                        <?= Html::input('text', 'freeze_volume', null, [
+                            'id' => 'freeze-volume',
+                            'class' => 'form-control',
+                            'placeholder' => 'Введите число',
+                            'oninput' => 'validateDecimal(this)'
+                        ]); ?>
+                    </div>
 
-                            <?= Html::label('Холодильник (M2)', null, ['class' => 'form-label']); ?>
-                            <?= Html::input('text', 'freeze_area', null, [
-                                'id' => 'freeze-area',
-                                'class' => 'form-control',
-                                'placeholder' => 'Введите число',
-                                'oninput' => 'validateDecimal(this)'
-                            ]); ?>
 
-                            <?= Html::label('Холодильник (M3)', null, ['class' => 'form-label']); ?>
-                            <?= Html::input('text', 'freeze_volume', null, [
-                                'id' => 'freeze-volume',
-                                'class' => 'form-control',
-                                'placeholder' => 'Введите число',
-                                'oninput' => 'validateDecimal(this)'
+                    <div class="col-md-8">
+                        <div class="container mt-5">
+                            <?= DualListbox::widget([
+                                'name' => 'matrix_type',
+                                'items' => ArrayHelper::map(\yii_app\records\MatrixType::find()->all(), 'id', 'name'),
+                                'options' => [
+                                    'size' => false
+                                ],
+                                'clientOptions' => [
+                                    'moveOnSelect' => false,
+                                    'nonSelectedListLabel' => "Тип матрицы <br>" . Html::a('Редактировать', '#'),
+                                    'selectedListLabel' => "&nbsp;<br><br>",
+                                    'showFilterInputs' => false,
+                                    'clearButton' => false,
+                                ],
                             ]); ?>
                         </div>
-
-
-                        <div class="col-md-8">
-                            <div class="container mt-5">
-                                <?= DualListbox::widget([
-                                    'name' => 'matrix_type',
-                                    'items' => [],
-                                    'options' => [
-                                        'size' => false
-                                    ],
-                                    'clientOptions' => [
-                                        'moveOnSelect' => false,
-                                        'nonSelectedListLabel' => "Тип матрицы <br>" . Html::a('Редактировать', '#'),
-                                        'selectedListLabel' => "&nbsp;<br><br>",
-                                        'showFilterInputs' => false,
-                                        'clearButton' => false,
-                                    ],
-                                ]); ?>
-                            </div>
-                        </div>
+                    </div>
+                    <div class="d-flex justify-content-end">
+                        <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success btn']) ?>
                     </div>
 
                 </div>
+
             </div>
         </div>
     </div>
-
-
-<?php
+</div>