2017-09-05 182 views
1

现在我想使用此代码对多菜单页面链接建设如何在laravel blade上单行表示多个if else条件?

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

,但我想Represente上面的代码对Laravel刀片单线。我对isset('')?''有一个想法:''对于单行而言,但是我的条件重复了3次,所以我怎样才能以这种格式在单行上表示多个if else条件。

<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

我觉得单行是IMPOSIBLE,您可以用在刀刃@php,像这样的例子。

<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

您可以创建一个函数来接受$mainMenu作为paramenter ,如果你想清理你的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;