2017-06-15 5 views
0

Salut, je suis nouveau à laravel et ne peut pas comprendre sections très bien, mais j'essaie d'afficher un spécifique dans une boucle seulement une fois, puis répéter tout le reste, si un certaine condition est vraie. Voici le code que j'essaie de modifier. Ici j'ai commenté la ligne que je ne veux qu'une seule fois.afficher un @ section une fois dans @foreach boucle

@foreach ($pageTypes['news-events']->categories as $cat) 
    <?php $related = $page->relatedPages($pageTypes['news-events']->id, $cat->id); ?> 
    @if ($related->count() > 0) 
     @section('tab-titles') 
     //i want to display this LI once if true 
     <li class="tab first"><a href="#news" title="insight">Insight</a></li> 
     @append 
     @section('news-content') 
      <div id="news" class="tabs_text"> 
       <h2>{{ strtoupper($cat->name) }} 
       </h2> 
       <ul> 
       @foreach($related as $news) 
        <li><a href="{{ url($news->url) }}" title="{{ $news->title }}"> 
          {{ $news->title }} 
         </a> 
        </li> 
       @endforeach 
       </ul> 
      </div> 
     @append 
    @endif 
    @endforeach 

Répondre

1

Vous devez utiliser un autre puisque vous voulez seulement afficher une fois

Consultez la documentation ici link

@if ($related->count() > 0) 
    @section('news-content') 
     <div id="news" class="tabs_text"> 
      <h2>{{ strtoupper($cat->name) }} 
      </h2> 
      <ul> 
      @foreach($related as $news) 
       <li><a href="{{ url($news->url) }}" title="{{ $news->title }}"> 
         {{ $news->title }} 
        </a> 
       </li> 
      @endforeach 
      </ul> 
     </div> 
    @append 
@else 
    @section('tab-titles') 
    //i want to display this LI once if true 
    <li class="tab first"><a href="#news" title="insight">Insight</a></li> 
    @append 
@endif 
0

Vous pouvez ajouter une variable simple à mettre un chèque si une section est été affiché avant ou non.

$check = 0; 
@foreach ($pageTypes['news-events']->categories as $cat) 
     <?php $related = $page->relatedPages($pageTypes['news-events']->id, $cat->id); ?> 

     @if ($related->count() > 0) 


      if($check==0) 
    { 
      @section('tab-titles') 
    //i want to display this LI once if true 
     <li class="tab first"><a href="#news" title="insight">Insight</a></li> 
      @append 
    $check++; 
    } 
      @section('news-content') 
       <div id="news" class="tabs_text"> 
        <h2>{{ strtoupper($cat->name) }} 
        </h2> 
        <ul> 
        @foreach($related as $news) 
         <li><a href="{{ url($news->url) }}" title="{{ $news->title }}"> 
           {{ $news->title }} 
          </a> 
         </li> 
        @endforeach 
        </ul> 
       </div> 
      @append 
     @endif 
     @endforeach 
0

Je ne sais pas si c'est la solution la plus élégante ou non. Mais vous pouvez réaliser ce que vous voulez comme suit:

<?php $repeat = true; // first initialize as true ?> 
@foreach ($pageTypes['news-events']->categories as $cat) 
    <?php $related = $page->relatedPages($pageTypes['news-events']->id, $cat->id); 

?> 

    @if ($related->count() > 0) 
     @if($your_certain_condition == true && $repeat) 
     <?php $repeat = false; ?> 
     @section('tab-titles') 
     <li class="tab first"><a href="#news" title="insight">Insight</a></li> 
     @append 
     @endif 

     @section('news-content') 
      <div id="news" class="tabs_text"> 
       <h2>{{ strtoupper($cat->name) }} 
       </h2> 
       <ul> 
       @foreach($related as $news) 
        <li><a href="{{ url($news->url) }}" title="{{ $news->title }}"> 
          {{ $news->title }} 
         </a> 
        </li> 
       @endforeach 
       </ul> 
      </div> 
     @append 
    @endif 
    @endforeach