📜  Blade forelse (1)

📅  最后修改于: 2023-12-03 15:29:37.553000             🧑  作者: Mango

Blade 模板引擎 for else

Blade 是 Laravel 框架中的模板引擎,其中的 @foreach@if 指令都可以使用 @forelse 来代替。@forelse 指令可以在循环数组或集合时,如果没有元素,可以返回默认值。

基本语法
@forelse($array as $item)
    {{ $item->name }}
@empty
    没有数据。
@endforelse

以上代码中,模板引擎会检查 $array 中是否有元素。如果没有元素,则会输出“没有数据。”。

使用 Blade 中的 conditionals

@forelse 完美地契合 Blade 不同的迭代方法,使您可以直截了当地嵌入各种条件语句。

下面的示例使用 Blade 的 conditionals 和 @forelse 来构建多个条件...

@forelse($products as $product)
    @if($product->visible)
        <h2>{{ $product->name }}</h2>
    @endif

    @unless($product->visible)
        <h2 class="hidden">{{ $product->name }}</h2>
    @endunless

    @if($loop->first)
        <span>This is the first iteration.</span>
    @endif

    @if($loop->last)
        <span>This is the last iteration.</span>
    @endif

@empty
    <p>No products found.</p>
@endforelse

此代码块将循环通过 $products 上的所有产品,但只有当 $productvisible 属性为 true 时才会输出标题。否则,使用 @unless 语句将元素隐藏。

同时,使用 $loop 对象来更好地控制循环。根据所处的迭代位置,模板引擎将输出“ This is the first iteration ”或“ This is the last iteration ”等文本。

访问其它 Blade 模板

@forelse 也适用于在视图中嵌入其它视图或片段。

下面的示例通过 @include 引用 partials.panel 视图,并在其中嵌套了产品列表:

@include('partials.panel', [
    'title' => 'List of products',
    'body' => function() {
        @forelse($products as $product)
            <li>{{ $product->name }}</li>
        @empty
            <p>There are no products to display.</p>
        @endforelse
    }
])

使用该方法,您可以将多个页面或片段嵌套在其它视图中,并精细控制数据的输出。例如,在给定的索引上对文章进行分页,并在单个页面中显示它们的列表,以便在复杂的应用程序中生成干净且易于维护的代码。

以上就是 @forelse 的基本用法,您可以使用它来帮助您处理任意数量的数据并生成干净、易于维护的代码。