noherczeg/breadcrumb

一个简单的面包屑生成库。

2.0.3 2013-11-20 03:44 UTC

This package is not auto-updated.

Last update: 2024-09-11 11:31:11 UTC


README

#Breadcrumb

一个用于面包屑管理的包。

此包已不再维护!

Total Downloads Build Status Scrutinizer Quality Score

##特性

  • 无框架限制
  • 可以使用语言文件或数组来翻译面包屑段
  • 可以使用URI字符串、JSON数组或PHP数组来创建段
  • 可以创建HTML、Twitter Bootstrap、Zurb Foundation面包屑
  • 可以任意数量地从两端忽略/删除/添加段
  • 可以覆盖翻译
  • 支持用户自定义构建器
  • 自定义分隔符
  • 4种不同的大小写选项:null (保留原始内容),小写,大写,标题
  • 在构建HTML面包屑时支持属性注入
  • 可以跳过链接到最后一个元素
  • 几乎一切都可以使用方法链
  • 提供Laravel 4的服务提供者

##安装

此包基于composer,因此如果您已安装它,您就已经完成了大部分工作。

Composer

https://getcomposer.org.cn/download/ 下载并安装composer

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

{
    "require": {
        "noherczeg/breadcrumb": "dev-master"
    }
}

完成操作后,只需运行 php composer install,即可使用此包!

Laravel特定设置

请注意,此包是无框架限制的!您也可以将其与任何框架一起使用!

Laravel 3配置

如果您正在使用laravel 3,您必须执行以下操作才能使用基于composer的包

  • 在项目目录的 paths.php 文件中添加以下行: $paths['composer'] = 'vendor';
  • 在项目目录的 public/index.php 文件中:在 require '../paths.php'; 行之后添加以下内容:require path('composer').'autoload.php';

将包注册为Laravel 4的服务

在您的 app/config/app.php 文件中的 providers 数组下放置以下内容:

'Noherczeg\Breadcrumb\BreadcrumbServiceProvider'

在相同文件下的 aliases 下完成外观的别名添加

'Breadcrumb' => 'Noherczeg\Breadcrumb\Facades\Breadcrumb'

通过发布的配置文件覆盖默认配置。您可以通过键入创建它

$ php artisan config:publish noherczeg/breadcrumb

##使用示例: ###通用使用

####1) 准备包

  • $base_url (String|required):您网站的基准URL
  • $use_language (mixed):语言代码(来自Languages文件夹的文件名),或用于翻译的字典数组
// Add your base url as you wish, like in Laravel's case: URL::base() or 'http://localhost/breadcrumb/' or whatever
$bc = new \Noherczeg\Breadcrumb\Breadcrumb(URL::base());

使用非默认语言(en 或您配置中设置的任何语言)

$bc = new \Noherczeg\Breadcrumb\Breadcrumb('http://localhost/breadcrumb/', 'de');

或使用自定义翻译数组(自2.0.2起)

$dictionary = array('this' => 'to_this', 'what' => 'what not?');
$bc = new \Noherczeg\Breadcrumb\Breadcrumb('http://localhost/breadcrumb/', $dictionary);

覆盖配置(可以是链式调用,也可以继续链式调用)

Breadcrumb::setConfiguration(array('language' => 'de'));

####2) 从变量输入类型注册一批段

警告:

  • 从版本2.0.0开始,此方法不再尝试将第一个元素设置为根元素!如果您想添加一个(指向您网站的基准URL),请向下滚动一点,您将得到一个示例,说明如何进行操作。
  • 如果翻译器在提供的字典中有匹配项,则所有给定的段都将被翻译!

支持来源: ArrayJSON ArrayString

// Using a PHP array to fill our list
$bc->from(array('test-segment', 'second', '3rd', 'Fourth-Thingy'));

// or JSON array
$bc->from('["asds", "12323", "Qw-Er-Ty"]');

// or URI String
$bc->from('First-Segment/Second/3rdWhatever');

####3) 分段注册段:您可以逐个添加段,也可以告诉面包屑将它们放在哪一侧。当您逐个处理数据,并且不一定在开始时知道最终结果顺序时,这很有用。

您可以告诉面包屑组件您不希望翻译的元素,或者希望它具有特定的值

  • $name (String|required):段/别名/URI部分本身(这部分将保持不变)
  • $side (String):放置段的位置(left / right,默认为right
  • $base (Boolean):此元素是否指向网站的基URL?(true / false,默认为false
  • $translate (mixed):如果为true,则尝试从字典中翻译元素,如果为false,则忽略翻译,如果为String,则使用给定值(默认为true)

我们现在也使用了方法链,但这只是一个选项:)

/**
 * The order in which the Segments will be stored in the list is: first, second, third, fourth.
 */
$bc->append('third');
$bc->append('fourth', 'right');
$bc->append('second', 'left')->append('first', 'left', true);

####4)添加指向基URL的段:自最新构建(2.0.0)以来,一个主要的逻辑问题已被修复。现在,无论您使用什么来源来初始化面包屑,都不会自动将第一个元素设置为根元素。这解决了链接的问题!从现在开始,如果您想添加指向基URL的元素,您必须每次都添加一个

// this way you'll have a first element 'welcome' which will point to your base url
$bc->from('/action/parameter1/parameter2')->append('welcome', 'left', true);

####5)从列表中删除段:您可以逐个从已注册的一组中删除段。

  • $pos (int|required):要删除的元素的索引
  • $reindex (Boolean):一个布尔值,可能会在删除后触发剩余元素的重新索引(默认为:false
// we provide a base list of Segments before removal
$bc->from(array('test-segment', 'second', '3rd', 'Fourth-Thingy'));

// remove the Segment on index: 2
$bc->remove(2);

// remove the Segment on index: 0, and re-index the list after
$bc->remove(0, true);

/**
 * Result will be (not an actual var_dump!)
 * 0 => 'second'
 * 1 => 'Fourth-Thingy'
 */

####6)添加/设置分隔符链接(禁用面包屑):现在,您可以添加或设置禁用段,这意味着在任何构建器中它们都将单独处理:它们不会进行翻译,并且将应用适当的格式化。

这当需要处理可变元素时非常有用。

添加一个新的禁用元素

// the last parameter flags the Segment as disabled
$bc->append(URI::segment(2), 'left', false, true, true);

禁用预填充的元素

// If you decide to disable or enable a Segment on the fly you can do it like this (works with enable() as well)
Breadcrumb::from(Request::path())->disable(1);

####7)覆盖翻译:自:2.0.2

// this way you can tell the translator to translate the given value to "overwritten" no matter what
$bc->append(URI::segment(3), 'left', true, 'overwritten');

####8)构建面包屑:创建面包屑可以是简单的,也可以是复杂的,如果需要的话。该包还允许您定义自己的构建器(如果您想查看,请检查 Builders 文件夹)。

  • $format (String):创建的面包屑的格式(bootstrapfoundationhtml
  • $casing (mixed):设置面包屑中文本的大小写(nullupperlowertitle,默认为null,这意味着不进行转换)
  • $last_not_link (Boolean):如果设置为false,则最后一个元素也将是一个链接,默认为true
  • $separator (String):面包屑之间的分隔符(仅应用于html和bootstrap风格的面包屑,因为Zurb Foundation中没有分隔符!)
  • $customizations (Array):可以设置一个自定义数组到元素,其中键是属性,值是值(仅适用于html类型的面包屑!)

#####首先,我们添加一些元素来工作

// Sample list initialization
$bc->from(array('test-segment', 'second', '3rd', 'Fourth-Thingy'));

#####a)使用默认设置创建面包屑

/**
 * This will build default format(html) breadcrumbs with the default separator( / )
 * without any casing modification or property injection, and the last element
 * won't be a link
 */
echo $bc->build();

#####b)创建Zurb Foundation风格的面包屑

/**
 * This will build Zurb Foundation styled breadcrumbs with all links upper cased, and
 * the last element will be a link too
 */
echo $bc->build('foundation', 'upper', false);

#####c)创建Bootstrap风格的面包屑

/**
 * This way you'll get Bootstrap styled breadcrumbs with unmodified casing, the last
 * element as link, and a "+" as separator
 */
echo $bc->build('bootstrap', null, false, '+');

#####d)创建复杂的HTML面包屑

/**
 * This will create HTML breadcrumbs which will have lower cased links, last
 * element won't be a link, default separator will be ` / `, and will inject properties
 * which are in the array.
 */
echo $bc->build('html', 'lower', true, null, array('style' => 'font-family: Arial; font-size: 11px;', 'class' => 'some_class'));

####8)实用函数:这些函数存在是为了在一定程度上简化您使用此包的工作。

  • 注册段列表:var_dump($bc->registered());
  • 从列表中选取一个元素:var_dump($bc->segment(1));
  • 列表中段的总数:var_dump($bc->num_of_segments());

###Laravel 3 特定,详细

##变更日志

###面包屑 2.0.3

  • 添加了在任何地方覆盖配置的能力
  • 添加了对分隔符链接(启用/禁用面包屑)的支持
  • 修复了配置和翻译处理

###面包屑 2.0.2

  • 添加了将翻译数组(字典)作为构造函数的第二个参数提供的能力
  • 现在,用户可以在构建面包屑时通过append()方法覆盖或忽略翻译

###面包屑 2.0.1

  • 现在可以通过 artisan 将配置发布到 Laravel 4。
  • 添加了 Laravel 4 服务提供者。

### Breadcrumb 2.0.0

  • 现在自动获取构建器列表,不再需要手动维护列表。
  • 关键:使用 from() 现在不会自动创建第一个元素作为根!如果你想始终让一个段指向根,你应该在左侧追加()一个,第二个参数设置为 'left',第三个参数设置为 true

示例已在本文档的相应部分中提供。

### Breadcrumb 2.0.0-alpha1

  • 该捆绑包已从零开始重写,现在作为 composer 包提供。
  • 修正了应用程序逻辑缺陷 (例如,基本段)
  • 方法现在是可链的。
  • 添加了对用户创建的构建器的支持。
  • 添加了对 URI 字符串输入的支持。
  • 现在与测试一起编写。

### Breadcrumb 1.2

  • 重构了代码中的注释。
  • 修复了捆绑初始化错误,捆绑包以自动翻译开始。
  • 添加了对正确处理 slug 的支持。
  • 添加了 get_raw_segments() 以便更好地进行调试。
  • 添加了 append(),现在可以添加任意数量的段到工作数组的任意一侧。
  • 添加了 remove(),可以移除工作数组中的任意数量的段,并提供索引处理。
  • 将配置文件中的 slug_separator 和 word_separator 选项。
  • 用新的、更好的、更详细的文档替换了较差的文档。

### Breadcrumb 1.1

  • 重命名了方法以获得更好的可读性。
  • 添加了对 Bootstrap 输出的支持。
  • 添加了对外部捆绑翻译文件处理选项的支持。
  • 在文档中提供了使用示例。
  • 在配置文件中添加了 scan_bundles、output_format 选项。

### Breadcrumb 1.0

  • 捆绑开始。

##开发人员笔记:如果您发现错误/逻辑错误或知道缺少的内容,请通过 pull requests 或 issues 告诉我。我正在跟踪这个存储库,并且会永远这样做,所以您可以联系我 :)