在CodeIgniter中制作"树下拉"(Tree Dropdown)可以通过以下步骤实现:
- 创建数据库表:首先,创建一个数据库表来存储树形结构的数据。表中应包含id、父节点id和节点名称等字段。
- 模型(Model):创建一个模型来处理与数据库表的交互。在模型中,编写方法来获取树形结构的数据,并将其转换为适合下拉列表的格式。
- 控制器(Controller):创建一个控制器来处理与视图和模型的交互。在控制器中,调用模型的方法来获取树形结构的数据,并将其传递给视图。
- 视图(View):创建一个视图来显示下拉列表。在视图中,使用HTML和JavaScript来生成下拉列表,并将从控制器传递过来的数据填充到下拉列表中。
下面是一个简单的示例代码:
- 数据库表(tree_table)结构示例:CREATE TABLE tree_table (
id INT PRIMARY KEY,
parent_id INT,
name VARCHAR(255)
);
- 模型(Tree_model.php)示例:class Tree_model extends CI_Model {
public function get_tree_data() {
// 从数据库中获取树形结构的数据
$query = $this->db->get('tree_table');
$data = $query->result_array();
// 转换数据为下拉列表格式
$tree_data = $this->build_tree($data);
return $tree_data;
}
private function build_tree($data, $parent_id = 0) {
$tree = array();
foreach ($data as $item) {
if ($item['parent_id'] == $parent_id) {
$children = $this->build_tree($data, $item['id']);
if ($children) {
$item['children'] = $children;
}
$tree[] = $item;
}
}
return $tree;
}
}
- 控制器(Tree_controller.php)示例:class Tree_controller extends CI_Controller {
public function index() {
$this->load->model('Tree_model');
$data['tree_data'] = $this->Tree_model->get_tree_data();
$this->load->view('tree_view', $data);
}
}
- 视图(tree_view.php)示例:<select id="tree_dropdown">
<option value="">请选择</option>
<?php foreach ($tree_data as $item): ?>
<option value="<?php echo $item['id']; ?>"><?php echo $item['name']; ?></option>
<?php if (isset($item['children'])): ?>
<?php foreach ($item['children'] as $child): ?>
<option value="<?php echo $child['id']; ?>">-- <?php echo $child['name']; ?></option>
<?php endforeach; ?>
<?php endif; ?>
<?php endforeach; ?>
</select>
<script>
// 使用JavaScript初始化下拉列表的插件(例如Select2)
$(document).ready(function() {
$('#tree_dropdown').select2();
});
</script>
这样,当访问控制器的index方法时,将会显示一个带有树形结构的下拉列表。用户可以选择树中的节点,并将选择的值提交到服务器进行进一步处理。
请注意,以上示例中使用了Select2插件来美化下拉列表,你可以根据需要选择其他插件或自定义样式。另外,这只是一个简单的示例,实际应用中可能需要根据具体需求进行适当的修改和扩展。