laravel面包屑导航(2)模块化开发

breadcrumbs详细使用手册

https://laravel-breadcrumbs.readthedocs.io/en/latest/index.html#


1. 安装##

1). 使用 composer 安装:

composer require davejamesmiller/laravel-breadcrumbs

关于 composer require 的安装方式,请见 这篇文章

2). 修改 config/app 文件,在 providers 数组内追加如下内容:

'providers' => [
    ...
    DaveJamesMiller\Breadcrumbs\ServiceProvider::class,
],

3). 修改 config/app 文件,在 aliases 数组内追加如下内容:

'aliases' => [
    ...
    'Breadcrumbs' => DaveJamesMiller\Breadcrumbs\Facade::class,
],

2. 配置 breadcrumbs##

modules\Manage\Http\Breadcrumbs.php 文件夹内创建 breadcrumbs.php 文件,内容如下:

<?php
$menus = \Modules\Manage\Entities\Menu::manage()->tree()->getToChildren();

Breadcrumbs::register('home', function ($breadcrumbs) {
    $breadcrumbs->push('管理首页', '/');
});
\App\Common\Helpers\Helper::breadcrumbs($menus);

3. 生成配置文件##

扩展包默认使用 Bootstrap 3 版本, 你也可以通过修改配置信息,来兼容 Bootstrap 2.

运行此命令生成配置文件:

php artisan vendor:publish

接着编辑 \config\breadcrumbs.php, 指定 Bootstrap 版本:

<?php

return [

   'view' => 'breadcrumbs.bootstrap3',

];

views 字段允许设置的值为:

  • Bootstrap 3: breadcrumbs::bootstrap3
  • Bootstrap 2: breadcrumbs::bootstrap2

4. 加载配置##

modules\Manage\Http\Middleware\Initialize.php

$breadcrumbs = base_path('modules/Manage/Http/Breadcrumbs.php');
if (file_exists($breadcrumbs)) {
    require $breadcrumbs;
}

return $next($request);

相关函数

public static function breadcrumbs($menus, $parent = 'home') {
    foreach ($menus as $menu) {
        Breadcrumbs::register($menu['url'], function ($breadcrumbs) use ($parent, $menu) {
            $breadcrumbs->parent($parent);
            $breadcrumbs->push($menu['name'], $menu['real_url']);
        });
        if (isset($menu['children']) && 0 < count($menu['children'])) {
            static::breadcrumbs($menu['children'], $menu['url']);
        }
    }
}

模板使用

\resources\views\breadcrumbs\bootstrap3.blade.php

@if ($breadcrumbs)
    <ul class="breadcrumb">
        @foreach ($breadcrumbs as $breadcrumb)
            @if (!$breadcrumb->last)
                <li><a href="{{ $breadcrumb->url }}">@if($breadcrumb->first)<i class="icon-home2 position-left"></i>@endif{{ $breadcrumb->title }}</a></li>
            @else
                <li class="active">{{ $breadcrumb->title }}</li>
            @endif
        @endforeach
    </ul>
@endif
\modules\Manage\Resources\views\article\index.blade.php

@extends('layouts.master')
@section('crumbs')
    {!! Breadcrumbs::renderIfExists() !!}
@endsection

@section('title')
    <?php
    $breadcrumbs = Breadcrumbs::generateIfExists();
    ?>

    {!! end($breadcrumbs)->title!!}

    @if(Request::get('category_id'))
        <span class="text-muted">{{ App\Models\ArticleCategory::loadModel(Request::get('category_id'))->name }}</span>
    @endif

@endsection

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值