可以在控制器功能中使用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;
}