Laravel Blade使用三元表达式报unexpected 'endif' (T_ENDIF)错误如何解决?
问题解决方法
问题根因
你遇到的unexpected 'endif' (T_ENDIF)报错,是因为在Blade组件标签的属性位置直接使用{{ }}插值输出三元表达式时,和Blade的组件属性解析逻辑冲突,生成的底层PHP代码出现语法异常。同时你自定义的Checkbox组件没有显式声明接收的属性,也可能加剧解析冲突。
解决方案
方案1(推荐):使用Blade内置条件指令
Laravel 8+ 内置了@checked专用于复选框的条件属性判断,直接替换原有写法即可:
<x-checkbox name="enable" id="enable" @checked($settings->enable)> {{ __('Enable') }} </x-checkbox>
该指令会自动根据表达式结果输出checked属性,无需手动写三元判断。
方案2:使用组件动态属性传参
如果你使用的Laravel版本不支持@checked指令,可以用:前缀的动态属性写法传值:
<x-checkbox name="enable" id="enable" :checked="$settings->enable"> {{ __('Enable') }} </x-checkbox>
可选:优化Checkbox组件写法
为了避免后续属性解析冲突,建议在你的Checkbox组件顶部显式声明接收的参数:
@props(['name', 'checked' => false]) <label class="inline-flex items-center mt-3"> <input {{ $attributes->merge(['class' => 'form-checkbox h-5 w-5 rounded text-indigo-600']) }} name="{{ $name }}" id="{{ $name }}" type="checkbox" @checked($checked) > <span class="ml-2 text-gray-900 text-md font-medium">{{ $slot }}</span> </label>
内容的提问来源于stack exchange,提问作者Ahsan
相关产品推荐
相关产品推荐

