什麼是 Blade 指令以及如何在 Laravel 中使用它們並提供範例
作為開發人員 Laravel,如果你想提高你的應用程式前端的可讀性和可維護性,那麼你需要深入研究使用 刀片指令.
Le 刀片指令 Laravel 它們是一個強大的工具,可以讓您簡化模型並使其更具表現力。
在這篇文章中,我們將深入研究它們 刀片指令 Laravel,我們將學習如何建立自訂指令並探索一些實際用例。
預計閱讀時間: 4 minuti
什麼是刀片指令?
刀片 是與 PHP Laravel 框架捆綁在一起的模板引擎。刀片指令是 一種將 PHP 程式碼嵌入到視圖模板中,同時保持簡潔、可讀語法的方法。 他們提供了一個 包含邏輯和動態內容的便捷方式 在你看來。
刀片指令
讓我們看看其中的一些 刀片指令 綜合提供者 Laravel.
@if
, @else
,而 @endif
@if($condition)
// Content to display if condition is true
@else
// Content to display if condition is false
@endif
您可以使用這些指令 有條件地顯示內容 基於一定的條件。
@switch
,而 @endswitch
@switch($i)
@case(1)
First case...
@break
@case(2)
Second case...
@break
@default
Default case...
@endswitch
@foreach
@foreach($items as $item)
// Content to display for each item
@endforeach
該指令 迭代數組或集合 並允許您處理循環中每個元素的內容。
@for
, @endfor
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
該指令 迭代數組 並允許您處理循環中每個元素的內容。
@while
e @endwhile
@while (true)
<p>I'm looping forever.</p>
@endwhile
該指令 每個條件迭代一次,當條件為假時迭代結束。
@continue
, @break
@foreach ($users as $user)
@if ($user->type == 1)
@continue
@endif
<li>{{ $user->name }}</li>
@if ($user->number == 5)
@break
@endif
@endforeach
使用循環時,您也可以跳過目前迭代或使用指令結束循環 @continue
e @break
循環變數: $loop->first
, $loop->last
在循環迭代期間,變數 $loop
提供對一些有用資訊的訪問,例如當前循環的索引以及這是循環的第一次還是最後一次迭代:
@foreach ($users as $user)
@if ($loop->first)
This is the first iteration.
@endif
@if ($loop->last)
This is the last iteration.
@endif
<p>This is user {{ $user->id }}</p>
@endforeach
如果處於嵌套循環中,則可以存取該變數 $loop
透過父屬性的父循環:
@foreach ($users as $user)
@foreach ($user->posts as $post)
@if ($loop->parent->first)
This is the first iteration of the parent loop.
@endif
@endforeach
@endforeach
我們也可以透過 $loop 變數來獲取信息, 你可以在 Laravel 官方文件中找到它們.
@unless
e @endunless
@unless (Auth::check())
You are not signed in.
@endunless
@isset
, @endisset
@isset($records)
// $records is defined and is not null...
@endisset
@empty
, @endempty
@empty($records)
// $records is "empty"...
@endempty
@include
@include('partials.header')
在目前視圖中包含另一個刀片視圖。 這有助於模組化您的模型。
@extends
, @section
@extends('layouts.app')
@section('content')
// Content specific to this view
@endsection
這些指令來了 用於建立和擴展佈局. @extends
指定繼承並定義的佈局 @section
佈局中要替換的內容。
建立自訂刀片指令
Laravel 允許您建立指令 刀片 客製化以進一步簡化您的視覺化。
讓我們看看如何建立自訂指令:
定義自訂指令:
定義一個 刀片指令 個性化,您需要註冊它 Service Provider
。 首先, 建立服務提供者或使用現有服務提供者。 在方法中 boot
德爾托 提供者,使用 la facade Blade
定義您的自訂指令。
use Illuminate\Support\Facades\Blade;
public function boot()
{
Blade::directive('mydirective', function ($expression) {
return "<?php // Your custom logic here ?>";
});
}
我們正在定義一個名為 @mydirective
。當該指令在模板中使用時 刀片,將執行閉包內的邏輯。
使用自訂指令:
現在您已經定義了自訂指令,您可以在範本中使用它 刀片 所以:
@mydirective($parameter)
用。 $parameter
您需要傳遞給您的指令的所有必需資料。
實際用例
讓我們探討一下指令的一些實際用例 刀片 個性化。
條件 CSS 類別:
您可以建立一個根據條件產生 CSS 類別的指令:
Blade::directive('classIf', function ($expression) {
list($condition, $class) = explode(',', $expression);
return "<?php echo ($condition) ? '$class' : ''; ?>";
});
現在,在 Blade 模板中,您可以有條件地應用以下 CSS 類別:
<div class="@classIf($user->isAdmin, 'admin')">...</div>
3.2 國際化:
建立文字翻譯指令可以使您的意見更加簡潔:
Blade::directive('trans', function ($expression) {
return "<?php echo __('$expression'); ?>";
});
像這樣使用它:
<p>@trans('messages.welcome')</p>
相關閱讀
Ercole Palmeri