2017-09-05 1 views
1

Maintenant, je suis en train d'utiliser ce code pour Multi Menu Pages Link BuildingComment est-ce que je peux représenter une condition multiple if else dans une seule ligne sur la lame Laravel?

<ul> 
    @foreach($main_nav as $mainMenu) 
    @if($mainMenu->page_type == "link-page") 
     $link = $mainMenu->link; 
    @elseif($mainMenu->page_type == "predefine-link") 
     $link = route('home').'/'.$mainMenu->link; 
    @else 
     $link = 'page/'.$mainMenu->slug; 
    @endif 

    <li> 
     <a href="{{ $link }}"> 
      {{ $mainMenu->title }} 
     </a> 
    </li> 
    @endforeach 
</ul> 

Mais je veux Represente code ci-dessus pour la ligne unique sur Laravel lame. J'ai une idée pour isset ('')? '': '' Pour une seule ligne mais ma condition est répétée 3 fois donc comment puis-je représenter plusieurs sinon sinon la condition sur une seule ligne dans ce format.

<ul> 
    @foreach($main_nav as $mainMenu)  
     <li> 
      <a href="{{ $mainMenu->page_type == "link-page" ? "$mainMenu->link" : route('home').'/'.$mainMenu->link }}"> 
       {{ $mainMenu->title }} 
      </a> 
     </li> 
    @endforeach 
</ul> 

Répondre

0

Je pense que seule ligne est imposible, vous pouvez utiliser @php à lame, comme dans cet exemple.

<ul> 
    @foreach($main_nav as $mainMenu) 

    @if($mainMenu->page_type == "link-page") 
     @php $link = $mainMenu->link; @endphp 
    @elseif($mainMenu->page_type == "predefine-link") 
     @php $link = route('home').'/'.$mainMenu->link; @endphp 
    @else 
     @php $link = 'page/'.$mainMenu->slug; @endphp 
    @endif 

    <li> 
     <a href="{{ $link }}"> 
     {{ $mainMenu->title }} 
     </a> 
    </li> 
    @endforeach 
</ul> 

J'espère que ce code résoudra votre problème. merci

0

Vous pouvez créer une fonction d'accepter la $mainMenu comme paramenter et exécuter une if/else ou switch déclarations sur $maninMenu->page_type si vous voulez nettoyer votre if/else. Vous pouvez créer un fichier helpers.php ou un utilisateur blade la directive @php.

//using `@php` 

@php 
function assignMainMenuPageType($mainMenu) 
{ 
if($mainMenu->page_type == "link-page") 
{ 
return $mainMenu->link; 
}else if($mainMenu->page_type == "predefine-link") 
{ 
return route('home').'/'.$mainMenu->link; 
} 
return 'page/'.$mainMenu->slug; 
} 
@endphp 

// use the function in your view 
<ul> 
    @foreach($main_nav as $mainMenu) 
    <li> 
     <a href="{{ assignMainMenuPageType($mainMenu) }}"> 
      {{ $mainMenu->title }} 
     </a> 
    </li> 
    @endforeach 
</ul> 
0

Vous pouvez utiliser l'opérateur imbriqué ternaires

(IF ? THEN : ELSE(IF ? THEN : ELSE(IF ? THEN : ELSE)) 

Dans votre cas, il devrait être:

$link = ($mainMenu->page_type == "link-page") ? $mainMenu->link : ($mainMenu->page_type == "predefine-link") ? route('home').'/'.$mainMenu->link : 'page/'.$mainMenu->slug;