Laravel Blade 模板引擎的 `@component` 指令

参考链接:https://laravel.com/docs/5.4/blade#components-and-slots

Laravel 5.4 为 Blade 模板引擎引入了 @component 指令,它在一定程度上代替了 @include / @includeIf 指令的作用,能更加清楚地表示要引入的是组件。

下面举例子。先定义一个 Alert 组件。

<!-- /resources/views/alert.blade.php -->

<div class="alert alert-danger">
    <div class="alert-title">{{ $title }}</div>

    {{ $slot }}
</div>

引入组件

@component('alert')
    @slot('title')
        Forbidden
    @endslot

    You are not allowed to access this resource!
@endcomponent

在组件中,$slot 是一个特殊的变量,它表示传递给组件的内容。引入组件时,除 @slot 指令之外的其余部分都被当做 $slot 的值、最终插入到定义组件时 {{ $slot }} 所在的位置上。

@slot 指令用来指定组件中命名槽变量,在这里指 title——相对于组件默认支持的变量 slot 而言,它是用户自己命名的,所以被称为命名槽变量。

点赞