刀片如果控制器功能中的条件



可以在控制器功能中使用blade @if条件。这是我的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)

我犯了什么错误,或者如果控制器中的语句,我们不能使用刀片?

刀片@if的语法是用于在刀片视图中使用的,而不是在PHP文件中(如您的案例控制器中)。您应该使用blade语法在用扩展名 - 文件名结尾的文件中。 blade.php ,在您的控制器中,请使用普通的php语法用于if语句。

请参阅刀片文档

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

希望这会有所帮助!

在您的代码中的错别字,代码是用于刀片文件而不是用于PHP文件的。代码中的列表问题

从您的代码中删除@

@if .... @elsif

应该是

if .... elseif 

更好的是多个if ... else您可以使用switch case

您正在返回banner,但应该是$banner,而且您也没有为$banner变量分配任何值。因此,您的代码就像

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

在控制器中您应该这样写:

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

但是,如果您要使用PHP构建HTML/CSS/JS,那是可怕的想法,请不要那样做。

您可以在控制器中构建样式,然后将结果数据传递给您的视图,然后将其呈现。这个片段可能会给您一点见解:

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

请尝试以上条件的开关案例。

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

它将返回完全相同的结果。

不,你不能。只需在PHP中使用默认的if else条件即可。

刀片是模板解析器,它将代码转换为幕后的PHP。如果您想在控制器中使用一些IF语句,则只需使用标准if语句。

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

如上所述,建议在使用大量其他语句为您的if

的情况下使用开关语句
switch($q){
    case "yes": 
        return $something;
    break;
    case "no":
        return $somethingelse;
        break;
    case "maybe":
        return $whoknows;
        break;
}

最新更新