没有 else 的 Blade 三元运算符

Blade ternary operator without else

我有一个对象,它的方法 hasATest 是 returns 一个布尔值,根据我想要启用或禁用按钮的值,所以我想做这样的事情:

<button class="btn btn-xs btn-detail btn-activate" name="question_id" value="{{$question->id}}" id="activate{{$question->id}}"
    "{{ $question->hasATest() ? disabled : }}"> Activate 
</button>

但是我不知道其他的怎么办。如果我删除 :,则会发生错误:

"unexpected ="  ... 

另外,残疾人也不是对面的。

你在这行有问题:

"{{ $question->hasATest() ? disabled : }}"

解决方法如下:

{{ ($question->hasATest()) ? disabled : 'enable' }}

只需为 else 部分使用一个空字符串。

<button class="btn btn-xs btn-detail btn-activate" name="question_id" value="{{$question->id}}" id="activate{{$question->id}}"
    {{ $question->hasATest() ? 'disabled' : '' }}> Activate 
</button>

我想你也可以用 @if 代替三元。

<button class="btn btn-xs btn-detail btn-activate" name="question_id" value="{{$question->id}}" id="activate{{$question->id}}"
    @if($question->hasATest()) disabled @endif> Activate
</button>

正如您已经发现的那样,三元运算符需要一个 else,您可以尝试一些语句,例如 null 或者在本例中 "" 到 return 空值else.

{{ ($question->hasATest()) ? "disabled" : "" }}

对于那些必须检查非布尔值变量是否存在的人

例如$question->test returns 测试名称(字符串)然后你可以使用 isset

<td> 
{{ isset($question->test) ? $question->test : __('question.no_test') }}
</td>