Динамические значения bootstrap multiselect

226
05 мая 2017, 20:04

Как можно динамически изменять значения в мультиселекте, при условии, что есть поля в json? есть экшн, возвращающий json с районами, в зависимости от переданного айди региона:

public function actionDistricts($region){
    $query = ArrayHelper::map(\app\models\zo_gcd\District::find()->where(['region_id' => $region])->orderBy('name')->all(), 'id', 'name');
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    return $query;
}

рендер контролов:

<?= $this->render('mainsearch/controls/multiselect', [
    'id' => 'region-input',
    'source' => $region,
    'label' => 'Регион',
    'name' => 'multiselect_region[]',
    'class' => 'col-sm-3 col-xs-12 region' ]); ?>
<?= $this->render('mainsearch/controls/multiselect', [
    'source' => $district,
    'label' => 'Район',
    'name' => 'districtslist[]',
    'class' => 'col-sm-3 col-xs-12' ]); ?>

Сам контрол:

<?php
$zname = preg_replace("~(\\\|\*|\?|\[|\?|\]|\(|\\\$|\))~", "",$name);
if(isset($_GET[$zname])) {
    $values = $_GET[$zname] ?: [];
} else {
    $values = [];
}
?>
<div class="<?= $class ? $class : "col-sm-3 col-xs-12" ?>">
    <label><?= $label ?></label>
    <select name="<?= $name ?>" multiple="multiple">
        <?php foreach ($source as $id => $val) { ?>
            <option <?= in_array($id, $values) ? 'selected="selected"' : '' ?> value="<?= $id ?>"><?= $val ?></option>
        <?php } ?>
    </select>
</div>

И что-то похожее на событие по изменению селекта:

var onchangeBinder = function () {
        // мониторятся только имеющие атрибут name и активные + objecttype
        $('.searchform :input[name][disabled!=disabled], .searchform :input#objecttype').unbind("change").change(function () {
            // определяем ид элемента
            switch ($(this).attr('id')) {
                case "objecttype":
                    setForm();
                    break;
                case "multiselect_region":
                    //something here
                    break;
            }
            console.log("-----------------");
            console.log($(this).attr('name'), $(this).val());
            console.log("-----------------");
            loadByCatalogCount();
        });
    };
READ ALSO
PHP, замена html тегов с занесением их в массив

PHP, замена html тегов с занесением их в массив

Пытаюсь сообразить, как можно реализовать следующую задачу:

214
как избежать вложенные формы

как избежать вложенные формы

Друья! Есть формаВизуально выглядит так:

186
OneDrive api php

OneDrive api php

Как мне загрузить файл большого размера на OneDrive используя PHP?

293