简体   繁体   English

Laravel Bootstrap Accordion 无法正常工作?

[英]Laravel Bootstrap Accordion is not working properly?

In my accordion I am showing the parent items.在我的手风琴中,我展示了父项。 Which I am getting by using getItems() method.我通过使用getItems()方法得到的。 It is being linked to every item.它被链接到每个项目。 And every parent item has some child items.每个父项都有一些子项。 Which I am getting using ($item->children as $child) And when clicks any parent item, the child items of that parent item should be visible from drop down.我正在使用($item->children as $child)当单击任何父项时,该父项的子项应该从下拉列表中可见。

The problem is whenever I click any parent item, every child item is being shown in the drop down.问题是每当我单击任何父项时,每个子项都会显示在下拉列表中。 But I want only the child item of the parent item to be shown.但我只想显示父项的子项。 It would be nice If someone can help me out.如果有人可以帮助我,那就太好了。 Thanks in advance.提前致谢。

This is my blade file code.这是我的刀片文件代码。

<div class="container my-4">
        <div class="accordion md-accordion" id="accordionEx" role="tablist" aria-multiselectable="true">
          <div class="card">
            <div class="card-header" role="tab" id="headingTwo2">
              @foreach(getItems() as $item)
                <a class="collapsed" data-toggle="collapse" data-parent="#accordionEx" href="#collapseTwo2"
                  aria-expanded="false" aria-controls="collapseTwo2">
                  <h5 class="mb-0">
                    {{ $item->name }} <i class="fas fa-angle-down rotate-icon"></i>
                  </h5>
                </a>
                <div id="collapseTwo2" class="collapse" role="tabpanel" aria-labelledby="headingTwo2"
                  data-parent="#accordionEx">
                  <div class="card-body">
                     @foreach ($item->children as $child)
                      <a href="{{ route('category.island.list') }}?category={{ $child->id }}"
                      class="dropdown-item" data-id="{{ $child->id }}" data-name="{{ $child->name }}">
                      <span>{{ $child->name }}</span>
                      </a>
                @endforeach
                  </div>
                </div>
              @endforeach
            </div>

          </div>
          
        </div>
      </div>

This is normal, because they all have the same href here:这是正常的,因为它们在这里都有相同的 href:

<a class="collapsed" data-toggle="collapse" data-parent="#accordionEx" href="#collapseTwo2"
                  aria-expanded="false" aria-controls="collapseTwo2">

and they all have make reference to the same "id" in this div:他们都在这个 div 中引用了相同的“id”:

<div id="collapseTwo2" class="collapse" role="tabpanel" aria-labelledby="headingTwo2"
                 data-parent="#accordionEx">

So just add a variable in your foreach as a "count" that will increase foreach loop and you just add that into your href and Id with twig and that is fine:)因此,只需在您的 foreach 中添加一个变量作为“计数”,这将增加 foreach 循环,您只需将其添加到您的 href 和 Id 中 twig 就可以了:)

Twig way: Out of 1st foreach: TWIG: {% set count = 0 %} PHP: <?php $count = 0; ?> Twig 方式:第一个 foreach:TWIG: {% set count = 0 %} PHP: <?php $count = 0; ?> <?php $count = 0; ?> In your 1st foreach at the end: TWIG: {% set count = count + 1 %} PHP: <?php $a++; ?> <?php $count = 0; ?>在最后的第一个 foreach 中:TWIG: {% set count = count + 1 %} PHP: <?php $a++; ?> <?php $a++; ?> As follow: <?php $a++; ?>如下:

    <div class="container my-4">
            <div class="accordion md-accordion" id="accordionEx" role="tablist" aria-multiselectable="true">
              <div class="card">
                <div class="card-header" role="tab" id="headingTwo2">
<?php $count = 0; ?>
                  @foreach(getItems() as $item)
                    <a class="collapsed" data-toggle="collapse" data-parent="#accordionEx" href="#collapseTwo2{{ $count }}"
                      aria-expanded="false" aria-controls="collapseTwo2{{ $count }}">
                      <h5 class="mb-0">
                        {{ $item->name }} <i class="fas fa-angle-down rotate-icon"></i>
                      </h5>
                    </a>
                    <div id="collapseTwo2{{ $count }}" class="collapse" role="tabpanel" aria-labelledby="headingTwo2"
                      data-parent="#accordionEx">
                      <div class="card-body">
                         @foreach ($item->children as $child)
                          <a href="{{ route('category.island.list') }}?category={{ $child->id }}"
                          class="dropdown-item" data-id="{{ $child->id }}" data-name="{{ $child->name }}">
                          <span>{{ $child->name }}</span>
                          </a>
                    @endforeach
                      </div>
                    </div>
<?php $count++; ?> 
                  @endforeach
                </div>
    
              </div>
              
            </div>
          </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM