【问题标题】:How to get all child of a user group in Joomla?如何在 Joomla 中获取用户组的所有子项?
【发布时间】:2013-07-12 07:28:17
【问题描述】:

我有一个user_groups

id  parent_id       title
1       0           Public
2       1           Registered
3       2           Author
4       3           Editor
12      2           Customer Group (Example)

您可以在这里看到 Register(2) 有 2 个子 id(3,12) 并且 id(3) 也有它的子 (4)。所以它创建了一棵树。现在我需要在列表框中制作这样的树。所以我试过这样:

<?php
$db = JFactory::getDbo(); 
$query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=2";
$db->setQuery($query);  
$groups = $db->loadObjectList();
?>
<tr>
    <td>Select Group</td>
    <td>
    <select name="usergroup">
    <option value="0"><?='Select Group';?></option>                 
    <?
    foreach($groups as  $group) {

        $query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=".$group->id;
        $db->setQuery($query);  
        $groups2 = $db->loadObjectList();
    ?>
    <option value="<?=$group->id?>"><?=$group->title?></option>
    <?  if($groups2!=''){
            foreach($groups2 as $group2){
                $query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=".$group2->id;
                $db->setQuery($query);  
                $groups3 = $db->loadObjectList();
            ?>
            <option value="<?=$group2->id?>">--<?=$group2->title?></option>
            <?
                if($groups3!=''){
                    foreach($groups3 as $group3){
                        $query = "select grp.id, grp.title from #__usergroups AS grp where parent_id=".$group3->id;
                        $db->setQuery($query);  
                        $groups4 = $db->loadObjectList();
                        ?>
                        <option value="<?=$group3->id?>">----<?=$group3->title?></option>
                        <?
                        if($groups4!=''){
                            foreach($groups4 as $group4){
                                ?>
                                <option value="<?=$group4->id?>">--------<?=$group4->title?></option>
                                <?
                            }
                        }
                    }
                }
            }
        }
    }?>
    </select>
    </td>
</tr>

但这不是最好的方法。如果我添加更多的子项目,那么这将不起作用,直到我制作另一个级别。所以我需要有效的方法来做到这一点,所以我以后不需要添加级别。请帮忙!

【问题讨论】:

    标签: php joomla mysqli joomla2.5 usergroups


    【解决方案1】:

    您可以使用 optgroup 来表示喜欢,

    <select>
      <optgroup label="Group 1">
        <option>Option 1.1</option>
      </optgroup> 
      <optgroup label="Group 2">
        <option>Option 2.1</option>
        <option>Option 2.2</option>
      </optgroup>
      <optgroup label="Group 3" disabled>
        <option>Option 3.1</option>
        <option>Option 3.2</option>
        <option>Option 3.3</option>
      </optgroup>
    </select>
    

    阅读此https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup

    【讨论】:

    • 对不起,这不是我想要的解决方案。这样做我们无法获取 optgroup 的值。我需要获取每个父数据。
    • 先显示父下拉菜单,然后根据用户选择显示子下拉菜单
    • @Sundar 但我想在同一个列表框中显示所有父项及其子项。如您所见,我已经这样做了,但这不是最好的方法。
    猜你喜欢
    • 2012-05-15
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2017-01-27
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多