构建父子类别Codeigniter

时间:2017-01-19 09:14:58

标签: php mysql codeigniter

我设法创建父类和子类,我使用一个表作为类别,使用字段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>

1 个答案:

答案 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()