web-dev-qa-db-ja.com

ブレードインラインifおよびelse ifステートメント

Laravelブレードテンプレートにインラインifおよびelse ifステートメントを指定する構文はありますか?

通常、ifおよびelseステートメントの構文は次のとおりです。

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

Else ifステートメントを含めたいのですが、これは可能ですか?

 {{ $var === "hello" ? "Hi" : "Goodbye" else if $var ==="howdie ? "how" : "Goodbye""}}
15
mario

laravelブレードでこのコードを使用できます:

{{  $var === "hello" ? "Hi" : ($var ==="howdie ? "how" : "Goodbye") }}
29
MoPo

すべての短いコードが良いものではないことを覚えておいてください。あなたの例では、あなたが言っているので、これをヒットする単一の方法はありません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"; }

これは間違っています。それぞれ2つのelsesを使用することはできません。次のような条件を構築しました

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

}

三項演算子でも同じ

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

2番目の条件では()に注意してください。

ご覧のとおり、コードはトリッキーで読みにくく、トレースが困難です。複数の条件を切り替えてロジックを修正する場合は、if else ifを使用してください。

4
M.Elwan
<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")selected @else not selected @endif

0
YoJey Thilipan

私はそれが1行に2つのif elseステートメントがあると信じています。インラインにする方法を想像することはできませんが、このようなことをしたでしょう。

@if($var=="hello" || $var=="Hi")
   {{$var === "hello" ? "Hi" : "Howdie"}}
@else
   {{"Goodbye"}}
@endif
0
Rahul Ravindran