我已成功创建父类别和子类别,我使用一张类别表,其中包含字段 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,但如何按照我上面提到的方式对其进行分组并传递给选择组
在我的 Controller 中,我使用此函数来获取所有类别:
$this->data['product_categories'] = $this->category_m->get();
更新::: 我设法通过创建两个函数来分别获取父级和子级来实现这一点,如下所示::
public function getAllParents();
public function getAllChild($id)
并在第一个函数循环内使用第二个函数结果。这是执行此操作的正确方法,还是任何其他正确的方法。我正在使用我的 View 文件,如下所示::
<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>
最佳答案
使用 codeigniter 的 result_array()
获取数组格式结果。就像这样..
$this->data['product_categories'] = $this->category_m->get()->result_array();
//print_r($this->data['product_categories']);
像这样渲染你的 View ...
<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()
。
关于php - 构建父子类别 Codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41737887/