【发布时间】:2021-04-09 19:14:12
【问题描述】:
我有递归函数,可以在我的选择下拉列表中填充数据。
我如何传递一个值,如果它与下拉列表中的任何值匹配,就会被选中?
这是我模型上的功能:
function get_all_cat($parent,$level=0,$s){
$ui = '';
$this->db->order_by($this->id, $this->order);
$this->db->where('parent',$parent);
$query=$this->db->get($this->table)->result();
foreach ($query as $qu) {
if($s==$qu->id){
$y = 'selected';
}
$repeat = str_repeat('--', $level);
$ui .= '<option value="'. $qu->id .'" '.$y.' >' .$repeat. $qu->title.'</option>';
$new_level = $level+1;
$ui .= '' .$this->get_all_cat($qu->id,$new_level) .'';
}
return $ui;
}
这是我在视图中的选择选项:
<div class="form-group">
<select name="category" class="form-control chosen-select">
<option value="">Any Category</option>
<?php
$cat = $this->Dbc_categories_model->get_all_cat(0,0,$this-session->userdata('clicked_id');
echo $cat;
?>
</select>
</div>
【问题讨论】:
-
你为什么要标记这个recursion?,还有你的问题在哪里?您能否解释一下,组合中没有控制器,那么视图如何从中获取数据?
-
哦,刚刚看到了,直接从视图中调用模型函数....有点打破框架的MVC概念
-
可以直接从codeigniter的视图中调用模型函数。真正的问题是选择下拉列表是从数据库类别表中递归生成的。现在我想当我单击该选项时,它应该被发送到控制器并将该值放在会话中,当返回视图并再次调用递归函数时,如果任何类别 id 等于会话中的 id 应该选择 id .
-
我不是说你不能从视图中调用模型,这是可能的,但是违背了 CI 的概念。无论如何,你想做什么,取决于你的递归。 php + javascript/jQuery 解决方案会有所帮助,因为您可以检测到选择的 on('change') 并通过 ajax 填充相应的内容
-
好吧,让我只使用 jquery,我正试图逃避它.. 但无论如何感谢您的建议。
标签: php codeigniter recursion select dropdown