刀片内联 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";
这是错误的,你不能分别使用两个else
s。你已经构建了你的条件,比如
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 语句的主要内容,如果未能解决你的问题,请参考以下文章
if...else if...else和switch语句的注意点,以及和js的if...else if...else的不同