codeigniter中的依赖下拉列表

时间:2014-12-24 19:59:42

标签: codeigniter

依赖下拉列表无法正常工作

我的控制器

<?php
class User extends CI_Controller {

public function __construct() {
 parent::__construct();
 $this -> load -> model('country_model');

}

 function index() 
 {

 $data['countries'] = $this -> country_model -> get_countries();
 $this -> load -> view('post_view', $data);
 }

 function get_cities($country){
 $this->load->model('city_model');
 header('Content-Type: application/x-json; charset=utf-8');
 echo(json_encode($this->city_model->get_cities($country)));
}

}

模型

<?php
class Country_model extends CI_Model {

public function __construct() {
 $this -> load -> database();

}

function get_countries() {
 $this -> db -> select('id, country_name');
 $query = $this -> db -> get('countries');

$countries = array();

if ($query -> result()) {
 foreach ($query->result() as $country) {
 $countries[$country -> id] = $country -> country_name;
 }
 return $countries;
 } else
  {
 return FALSE;
 }
 }

}

我的城市模特

<?php
class City_model extends CI_Model {

public function __construct() {
 $this -> load -> database();

}

function get_cities($country = null){
 $this->db->select('id, city_name');

 if($country != NULL){
 $this->db->where('country_id', $country);
 }

 $query = $this->db->get('cities');

 $cities = array();

 if($query->result()){
 foreach ($query->result() as $city) {
 $cities[$city->id] = $city->city_name;
 }
 return $cities;
 }else{
 return FALSE;
 }
}

}
?>

和我的观点(post_view)

<html>

 <head>
 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
 <script type="text/javascript">// <![CDATA[
 $(document).ready(function(){
 $('#country').change(function(){ //any select change on the dropdown with id country trigger this code
 $("#cities > option").remove(); //first of all clear select items
 var country_id = $('#country').val(); // here we are taking country id of the selected one.
 $.ajax({
 type: "POST",
 url: "Co/"+country_id, //here we are calling our user controller and get_cities method with the country_id

 success: function(cities) //we're calling the response json array 'cities'
 {
 $.each(cities,function(id,city) //here we're doing a foeach loop round each city with id as the key and city as the value
 {
 var opt = $('<option />'); // here we're creating a new select option with for each city
 opt.val(id);
 opt.text(city);
 $('#cities').append(opt); //here we will append these new select options to a dropdown with the id 'cities'
 });
 }

 });

 });
 });
 // ]]>
</script>
 </head>
<body>


    <form method="get">
    <label for="category">Parent Category</label>
    <select name="countries" id="parent_cat">
    <?php foreach($countries as $m)
    {
      ?>
        <option value="<?php echo $m->id; ?>"><?php echo $m->category_name; ?></option>
        <?php
    }
    ?>
    </select>
</form>
<?php $countries['#'] = 'Please Select'; ?>

<label for="country">Country: </label>

<?php  form_dropdown('country_id', $countries, '#', 'id="country"'); ?><br />


 <?php $cities['#'] = 'Please Select'; ?>
<label for="city">City: </label><?php echo form_dropdown('city_id', $cities, '#', 'id="cities"'); ?><br />
</body>
</html

我的国家/地区数据库

id  country_name
1   India
2   Sri Lanka

我的城市数据库

id  city_name   country_id
1   Mumbai  1
2   Kolkatta    1
3   Colombo     2
4   Matara  2

1 个答案:

答案 0 :(得分:0)

因为您没有创建它,所以将此行添加到您的views / post_view.php文件中:

<?php echo form_dropdown('country_id', $countries, '') ?>