如何在Laravel Blade组件中判断$slot插槽是否为空
结论
你给出的写法仅在$slot完全无内容时生效,存在边界场景兼容问题,不属于最优实现。
原写法的问题
直接判断$slot的逻辑没有过滤空白字符,如果调用组件时插槽内仅输入换行、空格这类无意义的空白内容,$slot会被判定为非空,最终页面输出空白而不会触发默认提示,不符合需求预期。
正确实现方式
Laravel 的 Blade 插槽对象本身内置了isEmpty()和isNotEmpty()方法,专门用于判断插槽内容是否为空,会自动过滤首尾空白字符,兼容所有边界场景,是官方推荐的判空方案,兼容 Laravel 7 及以上所有版本。
代码示例
<div> @if ($slot->isNotEmpty()) {{ $slot }} @else No available content @endif </div>
也可以简化成三元表达式写法:
<div> {{ $slot->isNotEmpty() ? $slot : 'No available content' }} </div>
内容的提问来源于stack exchange,提问作者Asaad Mahmood
相关产品推荐
相关产品推荐

