我有一个名为persons的刀片组件,它有不同的插槽我想要填充。
<div class="person">
<img src="{{ $image_url }}" alt="{{ $image_alt }}">
{{ $name }}
{{ $information }}
<a class="button button-primary" href="{{ $link }}" target="_blank">Homepage</a>
</div>
我有各种模板文件,其中我正在执行foreach,我想使用persons组件来显示信息。
@if ($persons)
@foreach ($persons as $person)
@component('components.person')
@slot('image_url')
{{ $person['person_image'] }}
@endslot
@slot('name')
{{ $person['person_name'] }}
@endslot
@slot('information')
{!! $person['person_information'] !!}
@endslot
@slot('link')
{{ $person['person_link'] }}
@endslot
@endcomponent
@endforeach
@endif
有时某些字段可能为空。例如,有时某人没有图片或主页,在这种情况下,我不想在主页上显示空白字段。
根据逻辑,我应该将issset()或empty()添加到组件文件中,如下所示:
<div class="person">
@empty ($image_url)
<img src="{{ $image_url }}" alt="{{ $image_alt }}">
@endempty
@isset ($name)
{{ $name }}
@endisset
@isset ($information)
{{ $information }}
@endisset
@isset ($link)
<a class="button button-primary" href="{{ $link }}" target="_blank">Homepage</a>
@endisset
</div>
但这似乎一点也不管用。它要么删除所有内容,要么什么都不删除(这取决于是否使用@isset()或@empty() )。
所以我的问题是:是否有可能在foreach循环中有条件地填充组件插槽?
发布于 2018-08-17 15:56:48
如您所说,最好在较高级别检查它们,但请注意,如果它们有名称槽,则应将某些内容传递到槽中,因此应调用:
@slot('myslot')
@if($myobject->value)
<h5>
Show
</h5>
@endif
@endslot
发布于 2018-12-20 00:37:19
这是一段时间以前的内容,但您可以使用null合并运算符来定义默认值
<div class="person">
<img src="{{ $image_url }}" alt="{{ $image_alt }}">
{{ $name ?? '' }}
{{ $information ?? '' }}
<a class="button button-primary" href="{{ $link }}" target="_blank">Homepage</a>
</div>
发布于 2019-10-11 06:28:48
使用@if
和null强制运算符并设置默认值:
<div class="person">
@if ($image_url ?? null)
<img src="{{ $image_url }}" alt="{{ $image_alt ?? '' }}">
@endif
<span>{{ $name ?? 'No name' }}</span>
{{ $information ?? null }}
@if ($link ?? null)
<a class="button button-primary" href="{{ $link }}" target="_blank">Homepage</a>
@endif
</div>
https://stackoverflow.com/questions/49149571
复制相似问题