【问题标题】:Building a Parent child Category Codeigniter构建父子类别 Codeigniter
【发布时间】:2017-01-19 09:14:57
【问题描述】:

我已经设法创建了父类别和子类别,我正在使用一个类别表,其中包含字段 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();

更新::: 我已经设法通过创建两个函数来分别获取父级和子级来实现这一点,如下所示::

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>

【问题讨论】:

  • 你说的是在视图页面中如何填充它吧?
  • 是的,在我的产品中添加视图文件

标签: php mysql codeigniter


【解决方案1】:

使用 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()

【讨论】:

  • 我正在使用单个表作为我在问题中提到的类别,例如字段 cat_id、cat_name 和 cat_parent_id,如果项目是父 cat_parent_id 将为 0
  • print_r($this-&gt;category_m-&gt;get()-&gt;result_array();) 发布您的数组。
  • by var_dump($this->category_m->get()) 我得到这个对象 arry :::::::::: array (size=7) 0 => object(stdClass )[40] public 'category_id' => string '1' (length=1) public 'category_name' => string 'Visiting Cards' (length=14) public 'parent_cat_id' => string '0' (length=1) public 'created_at' => string '2016-12-26 06:23:27' (length=19) public 'active' => string '1' (length=1)
  • 请检查我的问题更新。请告诉我这是正确的方法吗?
  • 能否请您发布两个函数的内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多