return [
'success' => true,
- 'data' => ArrayHelper::map($stores, 'id', function($store) {
+ 'data' => ArrayHelper::map($stores, 'id', function ($store) {
return $store->id . ' ' . $store->name;
}),
];
]
];
}
+
+ public function actionGetAddressData()
+ {
+ $params = Yii::$app->request->post()['depdrop_all_params'] ?? [];
+
+ if (isset($params['region'])) {
+ $cities = StoreCityList::findAll(['parent_id' => $params['region'], 'type' => StoreCityList::TYPE_CITY]);
+ if (!empty($cities)) {
+ $cityList = array_map(fn($city) => ['id' => $city->id, 'name' => $city->name], $cities);
+
+ return json_encode([
+ 'output' => $cityList,
+ 'selected' => $params['address_city'] ?? ''
+ ]);
+ }
+ }
+
+ if (isset($params['city'])) {
+ $districts = StoreCityList::findAll(['parent_id' => $params['city'], 'type' => StoreCityList::TYPE_DISTRICT]);
+ if (!empty($districts)) {
+ $districtList = array_map(fn($district) => ['id' => $district->id, 'name' => $district->name], $districts);
+
+ return json_encode([
+ 'output' => $districtList,
+ 'selected' => $params['address_district'] ?? ''
+ ]);
+ }
+ }
+
+ return json_encode(['output' => [], 'selected' => '']);
+ }
}
use yii_app\records\CityStore;
use yii_app\records\StoreCityList;
use yii_app\records\StoreType;
+use kartik\depdrop\DepDrop;
/* @var $this yii\web\View */
/* @var $dataProvider yii\data\ActiveDataProvider */
'class' => 'd-block mt-2 text-decoration-none',
'target' => '_blank'
]); ?>
-
</div>
</div>
+
<div class="col-md-2">
<div class="card p-2 bg-light shadow-sm">
<?= Select2::widget([
</div>
<div class="col-md-3">
<?= Html::label('Регион'); ?>
- <?= Select2::widget([
+ <?= Select2::widget([
'name' => 'CityStoreParams[address_region]',
'value' => null,
- 'data' => [],
+ 'data' => ArrayHelper::map(StoreCityList::findAll(['type' => StoreCityList::TYPE_REGION]), 'id', 'name'),
'options' => [
'placeholder' => 'Регион',
'class' => 'form-select',
],
]); ?>
</div>
+
<div class="col-md-3">
<?= Html::label('Город'); ?>
- <?= Select2::widget([
+ <?= DepDrop::widget([
'name' => 'CityStoreParams[address_city]',
- 'value' => null,
- 'data' => [],
'options' => [
+ 'id' => 'city',
'placeholder' => 'Город',
'class' => 'form-select',
- 'id' => 'city',
],
'pluginOptions' => [
- 'allowClear' => true,
+ 'depends' => ['region'],
+ 'placeholder' => 'Город',
+ 'url' => Url::to(['/city-store-params/get-address-data']),
+ 'params' => ['region'],
+ 'initialize' => true,
],
]); ?>
</div>
+
<div class="col-md-3">
<?= Html::label('Район'); ?>
- <?= Select2::widget([
+ <?= DepDrop::widget([
'name' => 'CityStoreParams[address_district]',
- 'value' => null,
- 'data' => [],
'options' => [
+ 'id' => 'district',
'placeholder' => 'Район',
'class' => 'form-select',
- 'id' => 'district',
],
'pluginOptions' => [
- 'allowClear' => true,
+ 'depends' => ['city'],
+ 'placeholder' => 'Район',
+ 'url' => Url::to(['/city-store-params/get-address-data']),
+ 'params' => ['city'],
+ 'initialize' => false,
],
]); ?>
</div>
<?= Html::label('Территориально управляющий', null); ?>
</div>
<div class="col-md-9">
- <?= Select2::widget([
+ <?= Select2::widget([
'name' => 'CityStoreParams[territorial_manager]',
'value' => null,
'data' => [],
<?= Html::label('КШФ') ?>
</div>
<div class="col-md-9">
- <?= Select2::widget([
+ <?= Select2::widget([
'name' => 'CityStoreParams[bush_chef_florist]',
'value' => null,
- 'data' => [],
+ 'data' => [],
'options' => [
'placeholder' => 'Кустовой шеф-флорист',
'class' => 'form-select',