Bootstrap - 使用 php 的手风琴风格错误

Posted

技术标签:

【中文标题】Bootstrap - 使用 php 的手风琴风格错误【英文标题】:Bootstrap - Error in the style of the accordion with php 【发布时间】:2020-09-30 04:00:21 【问题描述】:

我的数据库中有一个类别表,我正在从中生成一个菜单。我可以通过这种方式完美地生成菜单:

$renderItems = function($items) use (&$renderItems)

    echo '<ul>';
    foreach ($items as $item) 
        echo '<li>';
        echo h($item->name);

        if ($item->children) 
            $renderItems($item->children);
        

        echo '</li>';
    
    echo '</ul>';
;

$renderItems($list);

我正在尝试以 bootstrap 手风琴格式设置此菜单的样式,但我发现很难正确生成子项。

菜单如下所示:

使用此代码:

<div class="accordion" id="accordionExample">
        <div class="card">

            <div class="card-header" id="headingOne">
                <h5 class="mb-0">

                    <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne" style="padding: 0px">
                        Menu 1
                    </button>
                </h5>
            </div>

            <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">
                <div class="card-body">
                    <ul style="list-style: none; padding: 0px 0px 0px 10px">
                        <li><i class="fas fa-angle-right"></i> SubMenu 1</li>
                        <hr>
                        <li><i class="fas fa-angle-right"></i> SubMenu 2</li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

我试图用这种方式解决它,但我认为有问题。

<div class="accordion" id="accordionExample">
    <div class="card">
        <?php
        $renderItems = function($items) use (&$renderItems)
        
            foreach ($items as $item) 
                echo '<div class="card-header" id="headingOne">';
                echo '<h5 class="mb-0">';
                echo '<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne" style="padding: 0px">';

                echo h($item->nome);
                echo '</button>';
                echo '</h5>';
                echo '</div>';

                echo '<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionExample">';

                if ($item->children) 

                    echo '<div class="card-body">';
                    echo '<ul style="list-style: none; padding: 0px 0px 0px 10px">';
                    echo '<li>';
                    $renderItems($item->children);
                    echo '</li>';
                    echo '</ul>';                            
                    echo '</div>';
                
                echo '</div>';
              
          ;
          $renderItems($list);
          ?>

          </div>
</div>

朋友能告诉我如何组织这个或我做错了什么吗?我感谢任何cmets。最终结果如下所示。

【问题讨论】:

【参考方案1】:

Bootstrap 注重 html 属性。你也应该。所以;

您可以更改并重试。 (它们应该是动态值,用于基本解决循环); headingOne, collapseOne.

如果你在循环之前测试小说,你会自己发现问题。

这个表达式也是class ="collapse show";打开所有元素。如果需要,您可能需要在第一个元素中添加“显示”。

Bootstrap 4 - collapse documentation

【讨论】:

以上是关于Bootstrap - 使用 php 的手风琴风格错误的主要内容,如果未能解决你的问题,请参考以下文章

php WPML:以不同语言的手风琴风格获取每个学期的帖子。

引导手风琴 drupal 意见

使用 css 样式化 ng-bootstrap 手风琴

使用 Bootstrap 创建手风琴表

手风琴的音乐风格

如何使用带有单选按钮列表的 Bootstrap 手风琴