我设法创建父类和子类,我使用一个表作为类别,使用字段cat_id,cat_name_cat_parent_id。一切正常。但是我想在我的产品添加页面中显示这些类别,它应该显示为选择框选项组值,其中父类别作为标题已禁用,下面是子类别。如下
<select>
<optgroup label="Parent Category 1">
<option value="1">sub cat 1</option>
<option value="2">sub cat 2</option>
</optgroup>
<optgroup label="Parent Category 2">
<option value="mercedes">sub cat 1</option>
<option value="audi">sub cat 2</option>
</optgroup>
</select>
通过使用我的cat_model函数,我可以获取所有类别及其父类别ID,但是如上所述如何对其进行分组并传递给选择组
在我的控制器中,我使用此功能来获取所有类别:
$this->data['product_categories'] = $this->category_m->get();
UPDAT ::: 我设法通过创建两个函数来分别得到父和子,比如这个::
public function getAllParents();
public function getAllChild($id)
并使用第四个函数循环内的第二个函数结果。这是正确的方法,或任何其他适当的方式。我正在使用的视图文件::
<optgroup label="<?php echo $parent->category_name; ?>">
<?php $children = $controller->getAllChild($parent->category_id);
foreach ($children as $child) { ?>
<option value="<?php echo $child->category_id ;?>"
<?=set_select('product_category', $child->category_id); ?>><?php echo $child->category_name; ?>
</option>
<?php } ?>
</optgroup>
答案 0 :(得分:0)
使用codeigniter的result_array()
获取数组格式结果。就像这样..
$this->data['product_categories'] = $this->category_m->get()->result_array();
//print_r($this->data['product_categories']);
像这样渲染你的视图......
<select>
<?php foreach ($product_categories as $cat){?>
<optgroup label="<?php echo $cat['category_name'];?>">
<option value="1">sub cat 1</option>
<option value="2">sub cat 2</option>
</optgroup>
<?php }?>
</select>
注意:对于子类别,您必须在类别和子类别表之间使用join()
。