Вообщем у меня возникла такая проблема мне надо изменять значения select основываясь на другом select, у меня есть форма вот её часть:
<div class="add-store__col">
<div class="add-store__box">
<?= $form->field($modelShop, 'tariff_id')->dropDownList(ArrayHelper::map($tariffs, 'id', 'name'), ['prompt' => 'Выберите тариф', 'class' => 'jsx-select input choose__name'])->label('Тариф'); ?>
</div>
</div>
<div class="add-store__col add-store__col_w100">
<div class="add-store__box">
<div class="field">
<p class="field__text">Доп услуги</p>
</div>
<?= Html::activeDropDownList($modelShop, 'addition[]', ArrayHelper::map($tariffs, 'id', 'name'), ['multiple' => 'multiple', 'class' => 'field-select']); ?>
</div>
</div>
</div>
Первый select это тот на которым я основываюсь. Вот мой массив:
[0] => Array
(
[id] => 4
[created_at] => 1564749503
[updated_at] => 1564749503
[name] => Maxi
[cost] => 1900.00
[about] =>
[drop] => 0
[status] => 1
[maximum] => 0
[term] =>
[tariffAdditionQty] => Array
(
)
)
[1] => Array
(
[id] => 5
[created_at] => 1564749532
[updated_at] => 1567161599
[name] => Ultimate
[cost] => 2400.00
[about] =>
[drop] => 0
[status] => 1
[maximum] => 1
[term] =>
[tariffAdditionQty] => Array
(
[0] => Array
(
[tariff_id] => 5
[addition_id] => 3
[status_con] => 2
[addition] => Array
(
[id] => 3
[created_at] => 1567082635
[updated_at] => 1567082635
[name] => Доп. услуга 1
[cost] => 250.00
[about] =>
[type] => 1
)
)
[1] => Array
(
[tariff_id] => 5
[addition_id] => 5
[status_con] => 5
[addition] => Array
(
[id] => 5
[created_at] => 1567082657
[updated_at] => 1567082657
[name] => Доп. услуга 3
[cost] => 750.00
[about] =>
[type] => 0
)
)
)
)
Вообщем в первый select идут данные основные данные, а во второй должны подставлять данные из подмассива 'tariffAdditionQty', ну и соответственно не подставляться если он пустой, но я не знаю как точно мне это сделать, прошу помощи.
Ну вообщем я нашел ответ на свой вопрос честно говоря это похоже на костыль. Код формы:
<div class="add-store__col">
<div class="add-store__box">
<?= $form->field($modelShop, 'tariff_id')->dropDownList(ArrayHelper::map($tariffs, 'id', 'name'), ['prompt' => 'Выберите тариф', 'class' => 'jsx-select input choose__name'])->label('Тариф'); ?>
</div>
</div>
<?php foreach ($tariffs as $key => $tariff): ?>
<?php if ($key == 0): ?>
<div class="add-store__col add-store__col_w100 addition_block" id="tariff_<?= $tariff['id']; ?>">
<div class="add-store__box">
<div class="field">
<p class="field__text">Доп услуги</p>
</div>
<?= Html::activeDropDownList($modelShop, 'addition[]', ArrayHelper::map($tariff['tariffAdditionQty'], 'addition_id', 'addition.name'), ['multiple' => 'multiple', 'class' => 'field-select_' . $tariff['id']]); ?>
</div>
</div>
<?php else: ?>
<div class="add-store__col add-store__col_w100 addition_block" id="tariff_<?= $tariff['id']; ?>" style="display:none;">
<div class="add-store__box">
<div class="field">
<p class="field__text">Доп услуги</p>
</div>
<?= Html::activeDropDownList($modelShop, 'addition[]', ArrayHelper::map($tariff['tariffAdditionQty'], 'addition_id', 'addition.name'), ['multiple' => 'multiple', 'class' => 'field-select_' . $tariff['id']]); ?>
</div>
</div>
<?php endif; ?>
<?php endforeach; ?>
И js код который творит "магию замены":
$('select[name="Shops[tariff_id]"]').on('change', function(e) {
let id = $(this).val();
$('.addition_block').each(function(index, value) {
if ('tariff_' + id == $(this).attr('id')) {
$(this).css({'display':'block'});
} else {
$(this).css({'display':'none'});
}
});
});
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть таблица с товарами и таблица с категориями, у категорий есть рейтинг Нужно отсортировать товар по рейтингу категорий Вот, что у меня...
Пытаюсь загрузить на сервер сайта картинкув Mozille через инструмент Network посмотрел какие заголовки уходят на сервер вместе с файлом и попытался...