【问题标题】:Blade inline if and else if statement刀片内联 if 和 else if 语句
【发布时间】: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 个月内看到这段代码,你不会立即明白你在做什么。将逻辑放入控制器中。

标签: laravel-5 laravel-blade


【解决方案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

      【讨论】:

      • 这会产生额外的空格
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 2013-06-16
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      相关资源
      最近更新 更多