Laravel 7 一个 blade 组件同时使用变量和静态信息

Laravel 7 one blade component using both a variable and static information

在 Laravel 7 中,我想使用一个可以接受动态和静态值作为属性的 anonymous Blade component。下面的代码应该可以解释我的意思:

// Scenario 1: dynamic values

<x-alert :type="session('alert.type')" :dismissable="session('alert.dismissable')">
  {{ session('alert.body') }}
</x-alert>


// Scenario 2: static values

<x-alert :type="'success'" :dismissable="'yes'">
  {{ $status }}
</x-alert>

和组件

<div class="alert alert-{{ $type }} {{ $dismissable == 'yes' ? 'alert-dismissible' : '' }} fade show" role="alert">

    {!! $slot !!}

    @if($dismissable == 'yes')
        <button type="button" class="close" data-dismiss="alert">
            <i class="fal fa-times"></i>
        </button>
    @endif

</div>

现在这工作正常,但我的问题是:当您想勾选所有这些框时,这样做的正确方法是:

文档对此并不完全清楚。

您可以决定在使用组件时是通过HTML属性还是:前缀属性传递值。

如果组件收到动态值,请使用,如您所述:

<x-alert :type="session('alert.type')" :dismissable="session('alert.dismissable')">
 {{ session('alert.body') }}
</x-alert>

如果组件接收原始值,如硬编码字符串,请使用 HTML 属性,不带 : 前缀和单引号:

<x-alert type="success" dismissable="yes">
  {{ $status }}
</x-alert>

在这两种情况下,$type$dismissable 变量将在您的组件中可用。