2017-09-05 11 views
1

は今、私はマルチメニューページのリンクビルディングラベラーブレードの1行にelse if条件を複数表現するにはどうすればよいですか?

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

のためにこのコードを使用しようとしています。しかし、私はLaravelブレード上の1ライン分のRepresente上記のコードにしたいです。私はisset( '')のアイデアを持っていますか?: ''は単線ですが、私の条件は3回繰り返されます。

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

答えて

0

は、私はあなたがこの例のように、ブレードで@phpを使用することができ、単一のラインがIMPOSIBLEだと思います。

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

このコードがあなたの問題を解決することを願っています。おかげ

0

あなたはparamenter として$mainMenuを受け入れ、あなたのif/elseをきれいにしたい場合は$maninMenu->page_typeif/elseswitchステートメントを実行するための関数を作成することができます。 helpers.phpファイルまたはユーザblade@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

あなたはあなたのケースでは三項演算

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

を入れ子に使用することができ、それは次のようになります。

$link = ($mainMenu->page_type == "link-page") ? $mainMenu->link : ($mainMenu->page_type == "predefine-link") ? route('home').'/'.$mainMenu->link : 'page/'.$mainMenu->slug; 
関連する問題