Class yii\widgets\Breadcrumbs

继承yii\widgets\Breadcrumbs » yii\base\Widget » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\base\ViewContextInterface
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/widgets/Breadcrumbs.php

Breadcrumbs(面包屑)显示一个链接列表, 这些链接指示当前页面在整个站点层次结构中的位置.

例如, 像Home / Sample Post / Edit一样的面包屑意味着用户正在查看Sample Post的编辑页面. 他可以点击Sample Post来查看该页面, 或者他可以点击Home返回首页.

要使用 Breadcrumbs(面包屑), 你需要配置其 $links 属性, 该属性指定要显示的链接. 例如:

// $this 是当前正在使用的视图对象
echo Breadcrumbs::widget([
    'itemTemplate' => "<li><i>{link}</i></li>\n", // 所有链接的模板
    'links' => [
        [
            'label' => 'Post Category',
            'url' => ['post-category/view', 'id' => 10],
            'template' => "<li><b>{link}</b></li>\n", // 仅用于此链接的模板
        ],
        ['label' => 'Sample Post', 'url' => ['post/edit', 'id' => 1]],
        'Edit',
    ],
]);

由于面包屑通常出现在网站的几乎每个页面中, 因此你可以考虑将其放置在布局视图(layouts)中. 你可以使用视图参数(eg. $this->params['breadcrumbs'])在不同视图中配置链接. 在布局视图中, 将此视图参数分配给 $links 属性, 如下所示:

// $this 是当前正在使用的视图对象
echo Breadcrumbs::widget([
    'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
]);

公共属性

隐藏继承的属性

属性类型描述定义在
$activeItemTemplate string 用于在面包屑中渲染每个活动项目的模板. yii\widgets\Breadcrumbs
$autoIdPrefix string 自动生成的小部件 ID 的前缀. yii\base\Widget
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$counter integer 用于为小部件生成 $id 的计数器. yii\base\Widget
$encodeLabels boolean 是否对链接标签进行 HTML 编码. yii\widgets\Breadcrumbs
$id string|null 小部件的 ID. Note: 此属性的类型在 getter 和 setter 中不同. 有关详细信息, 请参阅 getId()setId(). yii\base\Widget
$itemTemplate string 用于渲染面包屑中的每个非活动项目的模板. yii\widgets\Breadcrumbs
$options array 面包屑容器标签的 HTML 属性. yii\widgets\Breadcrumbs
$stack yii\base\Widget[] 当前正在渲染的小部件(未结束). yii\base\Widget
$tag string 面包屑容器标签的名称. yii\widgets\Breadcrumbs
$view yii\web\View 可用于渲染视图或视图文件的视图对象. Note: 此属性的类型在 getter 和 setter 中不同. 有关详细信息, 请参阅 getView()setView(). yii\base\Widget
$viewPath string 包含此小部件的视图文件的目录. 该属性是只读的. yii\base\Widget

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
afterRun() 在执行小部件后立即调用该方法. yii\base\Widget
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeRun() 在执行小部件之前立即调用该方法. yii\base\Widget
begin() 开始一个小部件. yii\base\Widget
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
end() 结束小部件. yii\base\Widget
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getId() 返回小部件的 ID. yii\base\Widget
getView() 返回可用于渲染视图或视图文件的视图对象. yii\base\Widget
getViewPath() 返回包含此小部件的视图文件的目录. yii\base\Widget
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化该对象. yii\base\Widget
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
render() 渲染视图. yii\base\Widget
renderFile() 渲染视图文件. yii\base\Widget
run() 渲染小部件. yii\widgets\Breadcrumbs
setId() 设置小部件的 ID. yii\base\Widget
setView() 设置此小部件要使用的视图对象. yii\base\Widget
trigger() 触发事件. yii\base\Component
widget() 创建一个小部件实例并运行它. yii\base\Widget

受保护的方法

隐藏继承的方法

方法描述定义在
renderItem() 渲染一个面包屑项目. yii\widgets\Breadcrumbs

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_RUN yii\base\WidgetEvent 在执行小部件之后立即触发的事件. (available since version 2.0.11) yii\base\Widget
EVENT_BEFORE_RUN yii\base\WidgetEvent 在执行小部件之前触发的事件. (available since version 2.0.11) yii\base\Widget
EVENT_INIT yii\base\Event 当通过 init() 初始化小部件时触发的事件. (available since version 2.0.11) yii\base\Widget

属性详情

$activeItemTemplate public 属性

用于在面包屑中渲染每个活动项目的模板. 标记{link}将替换为每个活动项目的实际 HTML 链接.

public string $activeItemTemplate "<li class=\"active\">{link}</li>\n"
$encodeLabels public 属性

是否对链接标签进行 HTML 编码.

public boolean $encodeLabels true

面包屑中的第一个超链接(称为主链接或首页home链接). 链接的格式请参阅 $links. 如果未设置此属性, 则默认为指向 yii\web\Application::$homeUrl 的链接, 标签为Home. 如果此属性为false, 则将不会渲染主链接.

public array $homeLink null
$itemTemplate public 属性

用于渲染面包屑中的每个非活动项目的模板. 对于每个非活动项, 标记{link}将被替换为实际 HTML 链接.

public string $itemTemplate "<li>{link}</li>\n"

要在面包屑中出现的链接列表. 如果此属性为空, 则该小部件将不会渲染任何内容. 每个数组元素表示面包屑中的一个链接, 具有以下结构:

[
    'label' => 'label of the link',  // required
    'url' => 'url of the link',      // optional, 将由 Url::to() 处理
    'template' => 'own template of the item', // optional, 如果未设置, 将使用 $this->itemTemplate
]

如果一个链接处于活动状态, 你只需要指定它的label, 而不是写['label' => $label], 你可以简单的使用$label.

自版本 2.0.1 起开始, 每个链接的任何其他数组元素都将被视为超链接标签的 HTML 属性. 例如, 以下链接规范将生成一个 CSS 类为external的超链接:

[
    'label' => 'demo',
    'url' => 'http://example.com',
    'class' => 'external',
]

自版本 2.0.3 起开始, 每个单独的链接都可以覆盖全局的 $encodeLabels 参数, 如下所示:

[
    'label' => '<strong>Hello!</strong>',
    'encode' => false,
]
public array $links = []
$options public 属性

面包屑容器标签的 HTML 属性.

参见 yii\helpers\Html::renderTagAttributes() 有关如何渲染属性的详细信息.

public array $options = ['class' => 'breadcrumb']
$tag public 属性

面包屑容器标签的名称.

public string $tag 'ul'

方法详情

renderItem() protected 方法

渲染一个面包屑项目.

protected string renderItem ( $link, $template )
$link array

要渲染的链接. 它必须包含label元素, url元素是可选的.

$template string

用于渲染链接的模板, 标记{link}将被链接替换.

return string

渲染结果.

throws yii\base\InvalidConfigException

如果$link没有label元素.

run() public 方法

渲染小部件.

public void run ( )