在我的选择框中,我试图这样做:
Maincategory name
subcat
subcat
subcat
anothermain category
subcat
subcat
这是我目前的代码:
<select name="categories" class="form-control col-sm-12">
<?php foreach(ProductModel::categories() as $category): ?>
<option value="<?=System::escape($category->sub_category); ?>"><?=System::escape($category->sub_category); ?></option>
<?php endforeach; ?>
</select>
我不想在所有子猫上显示主要的cate名称,如
maincate:subcat
maincate:subcat
maincate:subcat
这是我的表:
我该怎么做呢?如果在foreach show cat name中有5个,我就不能这样做,因为我在每只主猫中都不会有相同数量的子序列
答案 0 :(得分:0)
如果我理解正确,在每个循环之前,你可以为当前主类别名称分配一个变量(从null开始),然后每次迭代时检查它是否与当前条目的主要匹配类别。如果没有,请让它关闭先前的optgroup并为主类别打开一个新的optgroup,然后为当前的子类别打开另一个optgroup。然后将变量分配给当前的主类别值,你应该好好去。如果变量未定义(即第一次'回合),你可能会跳过关闭标记。
这样的事情:
所以:
<select name="categories" class="form-control col-sm-12">
<?php
$i = 0;
$mainCatName = '';
foreach(ProductModel::categories() as $category):
if($category->main_category != $mainCatName {
$mainCatName = $category->main_category;
if($i = 0) { ?>
<optgroup label="<?php echo $category->main_category ?>">
<?php } else {
</optgroup>
<optgroup label="<?php echo $category->main_category ?>">
<?php }
}
?>
<option value="<?=System::escape($category->sub_category); ?>"><?=System::escape($category->sub_category); ?></option>
<?php if($i = count(count(ProductModel::categories()) { ?>
</optgroup>
<?php }
$i++;?>
<?php endforeach; ?>
</select>