У меня есть таблица carro
, которая имеет отношения с marca
и modelo
, и эти два также имеют отношения. Я сначала добавляю marca, а затем при добавлении нового modelo, я должен выбрать marca.CodeIgniter 3 - Изменить значения выбора в зависимости от другого выбора
Теперь, чтобы добавить новый Carro, я должен выбрать одну Marca и Modelo. В настоящее время перечислены все зарегистрированные modelo, но мне нужно указать те, которые связаны с выбранными marca. Ниже приведен HTML-код select
.
<div class="row">
<input id="hdn_id_marca" type="hidden" name="hdn_id_marca" value="0"/>
<div class="form-group col-md-6">
<label for="id_marca">Marca do Carro</label>
<select id="id_marca" name="id_marca" class="form-control" required>
<option value="" selected disabled>Selecione</option>
<?php foreach ($marcas as $m) { ?>
<option value="<?php echo $m['id']; ?>">
<?php echo $m['nome_marca']; ?>
</option>
<?php } ?>
</select>
</div>
<div class="form-group col-md-6">
<label for="id_modelo">Modelo do Carro</label>
<select id="id_modelo" name="id_modelo" class="form-control" required>
<option value="" selected disabled>Selecione</option>
<?php foreach ($modelos as $m) { ?>
<option value="<?php echo $m['id']; ?>">
<?php echo $m['nome_modelo']; ?>
</option>
<?php } ?>
</select>
</div>
</div>
Эти значения извлекаются из базы данных, это не статическое значение. Я попытался создать Ajax:
$('#id_marca').change(function() {
var selectedId = $(this).find('option:selected').val();
$('#hdn_id_marca').attr('value', selectedId);
$.ajax({
url: '/admin/modelos/select_by_id_marca',
data: {'hdn_id_marca': selectedId},
type: 'POST',
success: function() {
alert(data)
}
});
});
Но тогда я получаю
POST XHR http://localhost:8000/admin/modelos/select_by_id_marca [HTTP/1.1 500 Internal 53ms Ошибка сервера]
Edit 2
Ниже мой метод select_by_id_marca()
. Я также обновил предыдущий код, добавив поле hidden
, к которому этот метод должен иметь доступ. После некоторых изменений я исправил причину ошибки 500, но теперь поле не заполняется только modelo в соответствии с выбранными marca.
public function select_by_id_marca()
{
$data = array();
$this->db->order_by($this->primary_key, 'DESC');
$this->db->get_where('marca', array('id' => $this->input->post('hdn_id_marca')));
$query = $this->db->get('marca');
foreach ($query->result_array() as $row) {
$data[] = $row;
}
$query->free_result();
return $data;
}
добавить лет Ур 'select_by_id_marca'. –
Точно так же, как для обоев, для тех, кто задается вопросом: * carro * = * автомобиль *, * marca * = * make *, * modelo * = * модель *. – Hexaholic
@ Hexaholic Вы имеете в виду, что он пытается использовать богатый модельный метод? :) .. mfgabriel92 вы можете отобразить свой код действия контроллера, который вы пытаетесь обогатить. – Svetoslav