/
라라벨에서 Breadcrumb 을 손쉽게

라라벨에서 Breadcrumb 을 손쉽게

 

설치

composer require davejamesmiller/laravel-breadcrumbs

 

config/app.php 에 ServiceProvier 와 Facade alias 등록

'providers' => [
    // ...
    'DaveJamesMiller\Breadcrumbs\ServiceProvider',
],
 
'aliases' => [
    // ...
    'Breadcrumbs' => 'DaveJamesMiller\Breadcrumbs\Facade',
],

 

 

Breadcrumb 정의

app/Http/breadcrumbs.php

<?php

// Home
Breadcrumbs::register('home', function($breadcrumbs)
{
    $breadcrumbs->push('Home', route('home'));
});

// Home > About
Breadcrumbs::register('about', function($breadcrumbs)
{
    $breadcrumbs->parent('home');
    $breadcrumbs->push('About', route('about'));
});

// Home > Blog
Breadcrumbs::register('blog', function($breadcrumbs)
{
    $breadcrumbs->parent('home');
    $breadcrumbs->push('Blog', route('blog'));
});

// Home > Blog > [Category]
Breadcrumbs::register('category', function($breadcrumbs, $category)
{
    $breadcrumbs->parent('blog');
    $breadcrumbs->push($category->title, route('category', $category->id));
});

// Home > Blog > [Category] > [Page]
Breadcrumbs::register('page', function($breadcrumbs, $page)
{
    $breadcrumbs->parent('category', $page->category);
    $breadcrumbs->push($page->title, route('page', $page->id));
});

push() 뒤에 들어가는 route 이름은 routes.php 에 named route 로 지정해야 함.


템플릿 정의

default bootstrap 3

php artisan vendor:publish

 

config/breadcrumbs.php 

<?php
return [
	'view' => 'breadcrumbs::bootstrap3',
];


BreadCrumb 출력

HTML 로 출력하므로 블레이드 사용시 encoding 하지 않는 {!! !!}를 사용해야 함.

{!! Breadcrumbs::render('home') !!}
{!! Breadcrumbs::render('category', $category) !!}


템플릿 변경

템플릿 파일을 resources 폴더내에 작성(Ex: resources/views/_partials/breadcrumbs.blade.php)

@if ($breadcrumbs)
        @foreach ($breadcrumbs as $breadcrumb)
            @if (!$breadcrumb->last)
                <li><a href="{{{ $breadcrumb->url }}}">{{{ $breadcrumb->title }}}</a></li>
            @else
                <li class="active">{{{ $breadcrumb->title }}}</li>
            @endif
        @endforeach
@endif


에러 처리

[2015-05-26 09:18:09] local.ERROR: exception 'InvalidArgumentException' with message 'Route [home] not defined.' in myproj\vendor\laravel\framework\src\Illuminate\Routing\UrlGenerator.php:273
Stack trace:

 

 

 

 

 

Related content

PhpStorm 으로 라라벨 개발 하기
PhpStorm 으로 라라벨 개발 하기
More like this
Laravel doctrine ORM
Laravel doctrine ORM
More like this
Laravel Scout 으로 MeiliSearch 연동하기
Laravel Scout 으로 MeiliSearch 연동하기
More like this
Laravel 과 minio 연동
Laravel 과 minio 연동
More like this
Laravel scout 로 elastic search 사용하기
Laravel scout 로 elastic search 사용하기
More like this