在Codeigniter下拉列表中显示类别和多级子类别,可以按照以下步骤进行操作:
下面是一个示例代码:
模型(Category_model.php):
<?php
class Category_model extends CI_Model {
public function getCategories() {
$query = $this->db->get('categories');
return $query->result_array();
}
public function getSubcategories($parent_id) {
$this->db->where('parent_id', $parent_id);
$query = $this->db->get('categories');
return $query->result_array();
}
}
?>
控制器(Category.php):
<?php
class Category extends CI_Controller {
public function index() {
$this->load->model('category_model');
$data['categories'] = $this->category_model->getCategories();
$this->load->view('category_view', $data);
}
public function getSubcategories() {
$parent_id = $this->input->post('parent_id');
$this->load->model('category_model');
$data['subcategories'] = $this->category_model->getSubcategories($parent_id);
$this->load->view('subcategory_view', $data);
}
}
?>
视图(category_view.php):
<!DOCTYPE html>
<html>
<head>
<title>Category Dropdown</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<h1>Category Dropdown</h1>
<select id="category">
<option value="">Select Category</option>
<?php foreach ($categories as $category): ?>
<option value="<?php echo $category['id']; ?>"><?php echo $category['name']; ?></option>
<?php endforeach; ?>
</select>
<select id="subcategory">
<option value="">Select Subcategory</option>
</select>
<script>
$(document).ready(function() {
$('#category').change(function() {
var parent_id = $(this).val();
$.ajax({
url: '<?php echo base_url("category/getSubcategories"); ?>',
type: 'post',
data: {parent_id: parent_id},
dataType: 'json',
success: function(response) {
var options = '<option value="">Select Subcategory</option>';
$.each(response.subcategories, function(index, subcategory) {
options += '<option value="' + subcategory.id + '">' + subcategory.name + '</option>';
});
$('#subcategory').html(options);
}
});
});
});
</script>
</body>
</html>
视图(subcategory_view.php):
<?php foreach ($subcategories as $subcategory): ?>
<option value="<?php echo $subcategory['id']; ?>"><?php echo $subcategory['name']; ?></option>
<?php endforeach; ?>
以上代码中,模型中的getCategories()
方法用于获取所有类别的数据,getSubcategories($parent_id)
方法用于根据父类别ID获取对应的子类别数据。控制器中的index()
方法用于加载初始页面,getSubcategories()
方法用于处理AJAX请求,返回子类别数据。视图中的category_view.php
用于显示下拉列表,subcategory_view.php
用于返回子类别选项。
在Codeigniter中,可以使用$this->db->get()
方法执行数据库查询,$this->db->where()
方法设置查询条件。视图中使用了jQuery的AJAX方法来处理异步请求,根据选择的类别动态加载对应的子类别选项。
这样,当用户选择类别时,会触发AJAX请求,后台会根据选择的类别ID获取对应的子类别数据,并将数据返回给前端,前端再将数据添加到下拉列表中显示出来。
请注意,以上示例代码仅供参考,具体实现方式可能因项目需求和环境而异。
领取专属 10元无门槛券
手把手带您无忧上云