2017-09-05 1 views
1

nun diesen Code für Multi-Menü Seiten Link BuildingWie kann ich mehrere, wenn noch andere Bedingungen in einer Zeile auf Laravel Blade darstellen?

<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> 

Aber ich will für Single Line auf Laravel Blade Représente obigen Code zu verwenden Ich versuche. Ich habe eine Idee für isset ('')? '': '' Für einzelne Zeile, aber mein Zustand wird 3 mal wiederholt, wie kann ich also multiple wenn sonst Bedingung in einer Zeile in diesem Format darstellen.

<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> 

Antwort

0

denke ich einzelne Zeile ist imposible, Sie @php in Klinge verwendet wird, kann, wie in diesem Beispiel.

<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> 

ich hoffe, dass dieser Code Ihr Problem lösen wird. Dank

0

Sie können eine Funktion erstellen, die $mainMenu als Paramenter und führen eine if/else oder switch Aussagen auf $maninMenu->page_type, wenn Sie Ihre if/else reinigen möchten zu akzeptieren. Sie können eine helpers.php Datei oder einen Benutzer blade 's @php Direktive erstellen.

//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

können Sie verschachtelte verwenden Ternary Operator

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

In Ihrem Fall sollte es sein:

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