首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >条件刀片式服务器组件插槽

条件刀片式服务器组件插槽
EN

Stack Overflow用户
提问于 2018-03-07 18:27:18
回答 4查看 6.1K关注 0票数 0

我有一个名为persons的刀片组件,它有不同的插槽我想要填充。

代码语言:javascript
运行
复制
<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组件来显示信息。

代码语言:javascript
运行
复制
@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()添加到组件文件中,如下所示:

代码语言:javascript
运行
复制
<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循环中有条件地填充组件插槽?

EN

回答 4

Stack Overflow用户

发布于 2018-08-17 15:56:48

如您所说,最好在较高级别检查它们,但请注意,如果它们有名称槽,则应将某些内容传递到槽中,因此应调用:

代码语言:javascript
运行
复制
@slot('myslot')
  @if($myobject->value)
    <h5>
       Show
    </h5>
  @endif
@endslot
票数 1
EN

Stack Overflow用户

发布于 2018-12-20 00:37:19

这是一段时间以前的内容,但您可以使用null合并运算符来定义默认值

代码语言:javascript
运行
复制
<div class="person">
  <img src="{{ $image_url }}" alt="{{ $image_alt }}">
  {{ $name ?? '' }}
  {{ $information ?? '' }}
  <a class="button button-primary" href="{{ $link }}" target="_blank">Homepage</a>
</div>
票数 1
EN

Stack Overflow用户

发布于 2019-10-11 06:28:48

使用@if和null强制运算符并设置默认值:

代码语言:javascript
运行
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49149571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档