Class yii\bootstrap4\Breadcrumbs

Inheritanceyii\bootstrap4\Breadcrumbs » yii\bootstrap4\Widget » yii\base\Widget
Uses Traitsyii\bootstrap4\BootstrapWidgetTrait
Source Code https://github.com/yiisoft/yii2-bootstrap4/blob/master/src/Breadcrumbs.php

Breadcrumbs represents a bootstrap 4 version of \yii\widgets\Breadcrumbs. It displays a list of links indicating the position of the current page in the whole site hierarchy.

To use Breadcrumbs, you need to configure its $links property, which specifies the links to be displayed. For example,

echo Breadcrumbs::widget([
    'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [],
    'options' => [],
]);

See also https://getbootstrap.com/docs/4.5/components/breadcrumb/.

Public Properties

Hide inherited properties

Property Type Description Defined By
$activeItemTemplate string The template used to render each active item in the breadcrumbs. yii\bootstrap4\Breadcrumbs
$clientEvents array The event handlers for the underlying Bootstrap JS plugin. yii\bootstrap4\BootstrapWidgetTrait
$clientOptions array The options for the underlying Bootstrap JS plugin. yii\bootstrap4\BootstrapWidgetTrait
$encodeLabels boolean Whether to HTML-encode the link labels. yii\bootstrap4\Breadcrumbs
$itemTemplate string The template used to render each inactive item in the breadcrumbs. yii\bootstrap4\Breadcrumbs
$navOptions array The HTML attributes for the widgets nav container tag. yii\bootstrap4\Breadcrumbs
$options array The HTML attributes for the widget container tag. yii\bootstrap4\Widget
$tag string The name of the breadcrumb container tag. yii\bootstrap4\Breadcrumbs

Public Methods

Hide inherited methods

Method Description Defined By
getView() yii\bootstrap4\BootstrapWidgetTrait
init() Initializes the widget. yii\bootstrap4\Breadcrumbs
run() Renders the widget. yii\bootstrap4\Breadcrumbs

Protected Methods

Hide inherited methods

Method Description Defined By
registerClientEvents() Registers JS event handlers that are listed in $clientEvents. yii\bootstrap4\BootstrapWidgetTrait
registerPlugin() Registers a specific Bootstrap plugin and the related events yii\bootstrap4\BootstrapWidgetTrait
renderItem() Renders a single breadcrumb item. yii\bootstrap4\Breadcrumbs

Property Details

Hide inherited properties

$activeItemTemplate public property

The template used to render each active item in the breadcrumbs. The token {link} will be replaced with the actual HTML link for each active item.

public string $activeItemTemplate "<li class=\"breadcrumb-item active\" aria-current=\"page\">{link}</li>\n"
$encodeLabels public property

Whether to HTML-encode the link labels.

public boolean $encodeLabels true
$itemTemplate public property

The template used to render each inactive item in the breadcrumbs. The token {link} will be replaced with the actual HTML link for each inactive item.

public string $itemTemplate "<li class=\"breadcrumb-item\">{link}</li>\n"
$navOptions public property

The HTML attributes for the widgets nav container tag.

See also \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

public array $navOptions = [
    
'aria-label' => 'breadcrumb',
]
$tag public property

The name of the breadcrumb container tag.

public string $tag 'ol'

Method Details

Hide inherited methods

getView() public abstract method

Defined in: yii\bootstrap4\BootstrapWidgetTrait::getView()

See also \yii\base\Widget::getView().

public abstract \yii\web\View getView ( )
return \yii\web\View

The view object that can be used to render views or view files.

                abstract function getView();

            
init() public method

Initializes the widget.

If you override this method, make sure you call the parent implementation first.

public void init ( )

                public function init()
{
    parent::init();
    $this->clientOptions = false;
    Html::addCssClass($this->options, ['widget' => 'breadcrumb']);
}

            
registerClientEvents() protected method

Defined in: yii\bootstrap4\BootstrapWidgetTrait::registerClientEvents()

Registers JS event handlers that are listed in $clientEvents.

protected void registerClientEvents ( )

                protected function registerClientEvents()
{
    if (!empty($this->clientEvents)) {
        $id = $this->options['id'];
        $js = [];
        foreach ($this->clientEvents as $event => $handler) {
            $js[] = "jQuery('#$id').on('$event', $handler);";
        }
        $this->getView()->registerJs(implode("\n", $js));
    }
}

            
registerPlugin() protected method

Defined in: yii\bootstrap4\BootstrapWidgetTrait::registerPlugin()

Registers a specific Bootstrap plugin and the related events

protected void registerPlugin ( $name )
$name string

The name of the Bootstrap plugin

                protected function registerPlugin($name)
{
    $view = $this->getView();
    BootstrapPluginAsset::register($view);
    $id = $this->options['id'];
    if ($this->clientOptions !== false) {
        $options = empty($this->clientOptions) ? '' : Json::htmlEncode($this->clientOptions);
        $js = "jQuery('#$id').$name($options);";
        $view->registerJs($js);
    }
    $this->registerClientEvents();
}

            
renderItem() protected method

Renders a single breadcrumb item.

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

The link to be rendered. It must contain the "label" element. The "url" element is optional.

$template string

The template to be used to rendered the link. The token "{link}" will be replaced by the link.

return string

The rendering result

throws \yii\base\InvalidConfigException

if $link does not have "label" element.

                protected function renderItem($link, $template)
{
    $encodeLabel = ArrayHelper::remove($link, 'encode', $this->encodeLabels);
    if (array_key_exists('label', $link)) {
        $label = $encodeLabel ? Html::encode($link['label']) : $link['label'];
    } else {
        throw new InvalidConfigException('The "label" element is required for each link.');
    }
    if (isset($link['template'])) {
        $template = $link['template'];
    }
    if (isset($link['url'])) {
        $options = $link;
        unset($options['template'], $options['label'], $options['url']);
        $link = Html::a($label, $link['url'], $options);
    } else {
        $link = $label;
    }
    return strtr($template, ['{link}' => $link]);
}

            
run() public method

Renders the widget.

public void run ( )
throws \yii\base\InvalidConfigException

                public function run()
{
    $this->registerPlugin('breadcrumb');
    if (empty($this->links)) {
        return '';
    }
    $links = [];
    if ($this->homeLink === null) {
        $links[] = $this->renderItem([
            'label' => Yii::t('yii', 'Home'),
            'url' => Yii::$app->homeUrl,
        ], $this->itemTemplate);
    } elseif ($this->homeLink !== false) {
        $links[] = $this->renderItem($this->homeLink, $this->itemTemplate);
    }
    foreach ($this->links as $link) {
        if (!is_array($link)) {
            $link = ['label' => $link];
        }
        $links[] = $this->renderItem($link, isset($link['url']) ? $this->itemTemplate : $this->activeItemTemplate);
    }
    return Html::tag('nav', Html::tag($this->tag, implode('', $links), $this->options), $this->navOptions);
}