在專案中常常會使用到麵包屑導航(Breadcrumb),來引導使用者知道目前頁面所在的位置。這篇教學將示範如何在 Laravel 中製作一個簡潔又好用的 Breadcrumb 元件,並透過 Laravel 的 Blade Component 功能重複使用。

第一步:建立 Breadcrumb 元件

使用 Artisan 指令建立一個自訂元件:

php artisan make:component Breadcrumb

Laravel 會自動建立以下兩個檔案:

  • app/View/Components/Breadcrumb.php

  • resources/views/components/breadcrumb.blade.php

 

第二步:撰寫 Component 類別邏輯

// app/View/Components/Breadcrumb.php

namespace App\View\Components;

use Illuminate\View\Component;

class Breadcrumb extends Component
{
    public $breadcrumb;

    /**
     * @param array $breadcrumb 傳入的麵包屑資料陣列
     */
    public function __construct(array $breadcrumb)
    {
        $this->breadcrumb = $breadcrumb;
    }

    /**
     * 返回元件對應的 Blade 檔案
     */
    public function render()
    {
        return view('components.breadcrumb');
    }
}

這個元件接收一個名為 $breadcrumb 的陣列參數,並傳遞給對應的 Blade 檢視。

 

第三步:撰寫 Blade 檔案

<!-- resources/views/components/breadcrumb.blade.php -->

<nav aria-label="breadcrumb">
    <ol class="breadcrumb my-3">
        @foreach($breadcrumb as $item)
            @if (!$loop->last)
                <li class="breadcrumb-item">
                    @if(!empty($item['url']))
                        <a class="link-secondary" href="{{ $item['url'] }}">{{ $item['name'] }}</a>
                    @else
                        {{ $item['name'] }}
                    @endif
                </li>
            @else
                <li class="breadcrumb-item active" aria-current="page">{{ $item['name'] }}</li>
            @endif
        @endforeach
    </ol>
</nav>

 

這段程式會根據陣列產生對應的 <ol> 清單,並自動將最後一個項目標示為目前所在頁面(active 狀態)。

 

第四步:在畫面中使用元件

只要在任何 Blade 模板中使用 <x-breadcrumb> 並傳入對應的陣列即可:

<x-breadcrumb :breadcrumb="[
    ['name' => '首頁', 'url' => '/'],
    ['name' => '文章列表', 'url' => '/posts'],
    ['name' => 'Laravel Blade 元件教學']
]" />

 

顯示結果

<nav aria-label="breadcrumb">
    <ol class="breadcrumb my-3">
        <li class="breadcrumb-item"><a class="link-secondary" href="/">首頁</a></li>
        <li class="breadcrumb-item"><a class="link-secondary" href="/posts">文章列表</a></li>
        <li class="breadcrumb-item active" aria-current="page">Laravel Blade 元件教學</li>
    </ol>
</nav>

 

利用 Laravel 的 Blade Component,我們可以快速建立重複使用的 UI 元件,如麵包屑這種常見的導覽元件。這樣不但讓程式碼更乾淨,也更容易維護與擴充。