2016-11-26 67 views
0

是否可以在控制器功能中使用刀片@條件。這是我的PublicController如果在控制器功能條件下刀片

public function tourBanner($country){ 

    @if($country == 'country1') 
     background-image:url({{ asset('images/inside8.jpg') }});       
    @elseif ($country == 'country2')   
      background-image:url({{ asset('images/inside7.jpg') }}); 

    @elseif ($country == 'country3')   
      background-image:url({{ asset('images/inside5.jpg') }}); 

    @elseif ($country == 'country4')   
      background-image:url({{ asset('images/inside6.jpg') }});    
    @else   
      background-image:url({{ asset('images/inside10.jpg') }});   
    @endif 

    return banner; 
} 

的功能,我得到這個錯誤

Parse error: syntax error, unexpected 'if' (T_IF) 

我做了什麼錯誤,或者如果控制語句,我們不能用刀片?

+0

你在做普通的PHP文件是使用刀片語法錯誤。使用PHP語法。 –

+0

@zachary,你可以在刀片中使用'@ if',而不是在控制器中。你檢查了@ devmyb的答案嗎? – Sachith

回答

0

在控制器,你應該這樣寫:

if ($country == 'country1') { 
    $a = 'background-image:url('.asset('images/inside8.jpg').')'; 
} elseif .... 

但是,如果你要建立HTML/CSS/JS用PHP,這是可怕的想法,不這樣做。

1

刀片@if的語法是用於在刀片視圖中不使用php文件(如在你的情況下控制器)。您應該將刀片語法用於以擴展名 - 文件名結尾的文件。 blade.php,並在你的控制器請使用正常的PHP語法if語句。

請參閱Blade Docs

class Controller { 
    function a() { 
     if($country == 'country1') { 
      $asset_str = asset('images/inside8.jpg'); 
      $banner = "background-image:url({$asset_str})"; 
     } 
     .... 
     return $banner; 
    } 
} 

希望這有助於!

0

請嘗試切換情況以上條件。

switch ($country) { 
    case "country1": 
     echo "background-image:url({{ asset('images/inside8.jpg') }})"; 
     break; 
} 

它將返回完全相同的結果。

0

您可以在您的控制器中建立樣式,然後將結果數據傳遞給您的視圖,然後將其呈現。這段代碼可以給你一點啓示:

<?php 

    public function tourBanner($country){ 
     $extraData = ['zero', 'one', 'two']; 

     switch($country){ 
      case 'country1': 
       $bgImage = 'images/inside8.jpg'; 
       break; 
      case 'country2': 
       $bgImage = 'images/inside7.jpg'; 
       break; 
      case 'country3': 
       $bgImage = 'images/inside5.jpg'; 
       break; 
      case 'country4': 
       $bgImage = 'images/inside6.jpg'; 
       break; 
      default: 
       $bgImage = 'images/inside10.jpg'; 
       break; 
     } 

     return view("your.blade.view", array(
      "bgImage" => $bgImage, 
      'extraData' => $extraData, 
     )); 
    } 

即可;在視圖中,它會做這樣的事情的問題:

<div class="container" style="background-image:url({{ asset($bgImage) }})"> 
     <div class="col-md-12"> 
      Some Content... 
     </div> 
    </div> 
0

NO,你不能。只需在php中使用默認的if else條件即可。

1

在您的代碼中輸入代碼是指刀片文件而不是您的PHP文件。清單代碼

內的問題,從你的代碼刪除@

@if .... @elsif 

應該

if .... elseif 

多個if ... else你可以更好的使用switch case

你正在返回banner但它應該是$banner而且你也沒有給0123分配任何值變量。所以,你的代碼是一樣的

if($country == 'country1') 
     $banner = "background-image:url(".asset('images/inside8.jpg') .")"; 
....... 

return $banner; 

更好地使用switch case等作爲

switch($country) 
{ 
    case "country1": 
      $banner = "background-image:url(".asset('images/inside8.jpg') .")"; 
      break; 
    case .............. 
} 
0

刀片是一個模板分析器,它轉換代碼PHP幕後。 如果你想在控制器中使用一些if語句,你只需使用標準的IF語句。

if($q == $a) { 
    #more code here 
} else { 
    $other code here 
} 

正如上文所述,它使用了很多else語句用於在使用switch語句建議您如果

switch($q){ 
    case "yes": 
     return $something; 
    break; 
    case "no": 
     return $somethingelse; 
     break; 
    case "maybe": 
     return $whoknows; 
     break; 
}