jasonstainton/breadcrumbs

Laravel 的面包屑生成器。

1.0.0 2017-05-30 08:51 UTC

This package is not auto-updated.

Last update: 2024-09-25 01:26:55 UTC


README

轻松从模型或视图生成面包屑。

安装

将以下内容添加到您项目中的 composer.json 文件中

"jasonstainton/breadcrumbs": "1.*"

或者您可以在项目的根目录下通过命令行运行以下命令

composer require jasonstainton/breadcrumbs "1.*"

将服务提供者添加到 config/app.php 文件中的 providers 数组中。

'providers' => [
    // ...
    JasonStainton\Breadcrumbs\Providers\BreadcrumbsServiceProvider::class,
],

面包屑指令

@breadcrumbs()

通常,您会将此添加到任何您希望显示面包屑的部分中。

实现

您可以为模型动态添加面包屑,或者手动在视图中添加。每个方法都期望返回一个包含您希望添加的面包屑的数组。键应是一个完全限定的 URL(http://www.)和一个包含您希望显示的文本的字符串值。

通过模型

在您的模型上实现面包屑合约。

use JasonStainton\Breadcrumbs\Contracts\BreadcrumbContract;

class Model implements BreadcrumbContract
{
	...

这将需要您在模型中添加一个 getCrumbs() 方法,并期望返回一个数组。

public function getCrumbs()
{
	return [
		'http://www.example.com/page' => 'Example Crumb',
		route('blog') => 'Blog',
		$this->url => $this->title
	];
}

现在您只需要将您的模型传递给面包屑指令。

@breadcrumbs($model)

通过视图

如果未使用模型,您可以在指令中手动设置面包屑。同样,您只需要传递一个数组。

@breadcrumbs([
	'http://www.example.com/page' => 'Example Crumb',
	route('blog') => 'Blog'
])

配置

要使用自定义模板或修改任何预置面包屑,请在项目根目录下运行以下命令行

$ php artisan vendor:publish --provider="JasonStainton\Breadcrumbs\Providers\BreadcrumbsServiceProvider"

要仅发布视图或配置文件,您可以在命令中添加以下标记

$ php artisan vendor:publish --provider="JasonStainton\Breadcrumbs\Providers\BreadcrumbsServiceProvider" --tag="config"

$ php artisan vendor:publish --provider="JasonStainton\Breadcrumbs\Providers\BreadcrumbsServiceProvider" --tag="views"

自定义模板

您可以根据需要轻松编辑面包屑的外观。发布视图资产后,您将找到当调用面包屑指令时返回的面包屑视图。

/resources/views/vendor/breadcrumbs/breadcrumbs.blade.php

@if(isset($breadcrumbs))

	@foreach($breadcrumbs as $url => $name)

		@if($url == url()->current())

			<span>{{ $name }}</span>

		@else

			<a href="{{ $url }}">{{ $name }}</a> &raquo;

		@endif

	@endforeach

@endif

预置面包屑

默认情况下,面包屑总是带有主页链接面包屑返回。您可以选择删除它以在调用面包屑或添加到时获得最大灵活性。发布包的配置文件后,您可以删除主页链接或向其添加更多。

/config/breadcrumbs.php

'prepended_breadcrumbs' => [
	'/' => 'Home'
],

期望返回一个数组。因此,如果您想删除主页面包屑,只需返回一个空数组即可。