【问题标题】:Laravel/PHP - loop through items in a viewLaravel/PHP - 遍历视图中的项目
【发布时间】:2015-02-02 10:36:26
【问题描述】:

我有以下 html/blade 模板:

        {{--show all projects--}}

        @if(!empty($projects))

        @foreach($projects as $project)
        <div class="slide">
            <ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
                <li>
                    <div class="thumb">
                        <h3 class="thumbTitle">{{$project->title}}</h3>
                        {{--laat maar 1 image zien --}}
                        @if(!empty($project->project_images))


                        {{ HTML::image('useruploadedimages/'.$project->project_images[0]->url) }}


                        @endif

                    </div>

                </li>
        </div>


    @endforeach

    @endif
    </div>    

我想要的是以下内容:8 个项目显示在 .slide 类的 div 中,每个 8 个项目的 .slide 类的多个 div:例如,我有 25 个项目:比我想要 4 个 .slide div 3个有8个项目,1个有一个项目......

这可能吗?

【问题讨论】:

    标签: php laravel view foreach blade


    【解决方案1】:

    您可以为每 8 个项目关闭和打开一个新的 .slide div。我想ul 也必须在每个 div 中重新启动?

    @if(!empty($projects))
        <div class="slide">
            <ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
                @for($i = 0; $i < count($projects); $i++)
                    <?php $project = $projects[$i]; ?>
    
                    <li>
                        <div class="thumb">
                            <h3 class="thumbTitle">{{$project->title}}</h3>
                            {{-- only show one image --}}
                            @if(!empty($project->project_images))
                                { HTML::image('useruploadedimages/'.$project->project_images[0]->url) }}
                            @endif
    
                        </div>
    
                    </li>
    
                    {{-- If there were 8 projects, start a new .slide --}}
                    @if ($i % 8 == 7)
                        </ul></div><div class="slide"><ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
                    @endif
    
                @endfor
            </ul>
        </div>
    @endif
    

    【讨论】:

      【解决方案2】:

      你可以试试这种和平的代码

      {{--show all projects--}}
      
      @if(!empty($projects))
          $i  =   8;
          @foreach($projects as $project)
              @if($i%8    ==  0)    // checks for multiples if 8 and wraps your content with div and ul
                  <div class="slide">
                      <ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
              @endif      
                          <li>
                              <div class="thumb">
                                  <h3 class="thumbTitle">{{$project->title}}</h3>
                                  {{--laat maar 1 image zien --}}
                                  @if(!empty($project->project_images))
      
      
                                  {{ HTML::image('useruploadedimages/'.$project->project_images[0]->url) }}
      
      
                                  @endif
      
                              </div>
      
                          </li>
              @if($i++%8  ==  0)      // checks for multiples if 8 and increments i value
                      </ul>           // ends the ul and div
                  </div>
              @endif  
      
      
          @endforeach
      
      @endif
      </div>    
      

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        你可以像这样使用array_chunk

        @foreach(array_chunck($projects->toArray(), 8) as $projects)
            <div class="slide">
                <ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
                    @foreach($projects as $project)
                        <li>
                            <div class="thumb">
                                <h3 class="thumbTitle">{{$project['title']}}</h3>
                                @if(!empty($project['project_images']))
                                    {{HTML::image('....)}}
                                @endif
                            </div>
                        </li>
                    @endforeach
                </ul>
            </div>
        @endforeach
        

        注意数组表示法[],而不是对象表示法-&gt;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-01
          • 1970-01-01
          • 2012-09-07
          • 1970-01-01
          • 2016-06-21
          • 1970-01-01
          相关资源
          最近更新 更多