Связные списки в opencart

845
07 февраля 2017, 23:10

Делаю связные списки в opencart

view

<script>
$(document). ready(function () {
    $("#country").change(function () {
        var countryval = parseInt( $("#country").val() );
        //console.log(countryval);
        selectRegion(countryval);
    })
})
function selectRegion(countryval) {
    var region = $("#region");
    if (countryval > 0){
        $("#divregion").fadeIn("slow");
        region.attr("disabled", false);
        region.load(
            "/catalog/controller/account/order.php",
            {countryval : countryval}
        );
    }
}
</script>
<form action="/catalog/controller/account/order.php" method="post">
    <legend>Адрес доставки</legend>
    <!-- Text input-->
    <div class="form-group">
        <label class="col-sm-2 control-label" for="textinput">Область</label>
        <div class="col-sm-10">
            <select  name="country" id="country">
                <option value="0">- Выберите область -</option>
                <?php foreach ($regions as $region){ ?>
                <option value="<?php echo $region['id']?>"><?php echo $region['name']?></option>
                <?php } ?>
            </select>
        </div>
    </div>
    <div class="form-group">
        <label class="col-sm-2 control-label" for="textinput">Город</label>
        <div class="col-sm-10" id="divregion">
            <select disabled id="region" name="region" >
                <option value="">- Выберите город -</option>
                <?php foreach ($oll_city as $city){ ?>
                <option value="<?php echo $city['id']?>">
                <?php echo $city['name']?></option> <?php } ?>
            </select>
        </div>
    </div>
</form>

controller

$sq = $this->request->post['countryval'];
print_r($sq);

Пытаюсь получить значения которое пришло на сервер, выдает ошибку Notice: Undefined index: countryval

Подскажите может я неправильно указал пути для передачи данных.

Как правильно сделать ? передавать данные сразу в модель и там осуществлять запрос к базе или в контролер.

model

public function getRegion(){
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "region");
    return $query->rows;
}
Answer 1

1.Ваша форма не передаёт постом поле countryval, его там нет. Она передаёт ключ country со значением $region['id']. 2.Дёргать модель напрямую не надо, вы нарушите модель MVC. Код начнёт попахивать. И в дальнейшем производить правки будет сложно + могут возникать зависимости, которых вы никак не ожидаете. Трогайте модель через контроллер той вьюхи, где вам всё это надо выводить.

READ ALSO
Перезаписать массив

Перезаписать массив

Здравствуйте, у меня есть вложенные массивы:

746
Как добавить условие в dataProvider в yii2

Как добавить условие в dataProvider в yii2

С помощью CRUD с генерировал GridView на индексной странице

1129
запуск Python скрипта через PHP

запуск Python скрипта через PHP

делаю такправа на скрипт +x

1118