刀片内联 if 和 else if 语句

Posted

技术标签:

【中文标题】刀片内联 if 和 else if 语句【英文标题】:Blade inline if and else if statement 【发布时间】:2017-08-18 21:39:42 【问题描述】:

在 Laravel 刀片模板中是否有指定内联 if 和 else if 语句的语法?

通常,if 和 else 语句的语法是:

 $var === "hello" ? "Hi" : "Goodbye" 

我现在想包含 else if 语句,这可能吗?

  $var === "hello" ? "Hi" : "Goodbye" else if $var ==="howdie ? "how" : "Goodbye""

【问题讨论】:

你想要的是一个嵌套的三元组。 @mopo 的答案是正确的答案。但是嵌套的三元组是不可取的,它们很难阅读,如果你在 3 个月内看到这段代码,你不会立即明白你在做什么。将逻辑放入控制器中。 【参考方案1】:

我相信这是一行中的两个 if else 语句。我无法想象让它内联的方法,但我会做这样的事情。

@if($var=="hello" || $var=="Hi")
   $var === "hello" ? "Hi" : "Howdie"
@else
   "Goodbye"
@endif

【讨论】:

【参考方案2】:

请记住,并非每个短代码都是好的。在您的示例中,没有单一的方法可以点击此else if,因为您在说

if($var === "hello")
     
        // if the condetion is true
        "Hi";
    
else
     
        // if the condetion is false
        "Goodbye";
    
// error here
else if($var ==="howdie")
     "how"; 
else
     "Goodbye"; 

这是错误的,你不能分别使用两个elses。你已经构建了你的条件,比如

if (condition) 
    # code...
 elseif (condition) 
    # code...
 else 


三元运算符也是如此

(condition) ? /* value to return if first condition is true */ 
: ((condition) ? /* value to return if second condition is true */ 
: /* value to return if condition is false */ );

注意第二种情况下的(,)

如您所见,您的代码将变得棘手、不可读且难以追踪。因此,如果您有多个条件切换,请使用if else if 并修改你的逻辑。

【讨论】:

【参考方案3】:

您可以在 laravel Blade 中使用此代码:

  $var === "hello" ? "Hi" : ($var ==="howdie ? "how" : "Goodbye") 

【讨论】:

如果我要在里面添加 html 标签怎么办?例如“

再见

”。它显示标签。
然后你使用!! code here !!作为打开和关闭标签而不是 code here $var === "你好" ? "Hi" : ($var ==="howdie" ? "how" : "Goodbye") 缺少双引号。【参考方案4】:
<select id="days" class="Polaris-Select__Input" name="days" aria-invalid="false">
    <option value="10" @if($settingsData->days == "10") selected @endif >at 10 Days</option>
</select>

@if($settingsData->days == "10") 已选择 @else 未选择 @endif

【讨论】:

这会产生额外的空格

以上是关于刀片内联 if 和 else if 语句的主要内容,如果未能解决你的问题,请参考以下文章

刀片视图:带有 OR/AND 条件的 if 语句

Laravel 4:刀片布局中的 if 语句很奇怪

if...else if...else和switch语句的注意点,以及和js的if...else if...else的不同

内联 If 语句 - 短路

R语言中的if else语句

SQL语句中能否含有if....else...判断语句?