Class yii\bootstrap4\Breadcrumbs
Inheritance | yii\bootstrap4\Breadcrumbs » yii\bootstrap4\Widget » yii\base\Widget |
---|---|
Uses Traits | yii\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
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 |
$homeLink | array | The first hyperlink in the breadcrumbs (called home link). | yii\bootstrap4\Breadcrumbs |
$itemTemplate | string | The template used to render each inactive item in the breadcrumbs. | yii\bootstrap4\Breadcrumbs |
$links | array | List of links to appear 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
Method | Description | Defined By |
---|---|---|
getView() | yii\bootstrap4\BootstrapWidgetTrait | |
init() | Initializes the widget. | yii\bootstrap4\Breadcrumbs |
run() | Renders the widget. | yii\bootstrap4\Breadcrumbs |
Protected 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
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.
Whether to HTML-encode the link labels.
The first hyperlink in the breadcrumbs (called home link). Please refer to $links on the format of the link. If this property is not set, it will default to a link pointing to \yii\web\Application::homeUrl with the label 'Home'. If this property is false, the home link will not be rendered.
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.
List of links to appear in the breadcrumbs. If this property is empty, the widget will not render anything. Each array element represents a single link in the breadcrumbs with the following structure:
[
'label' => 'label of the link', // required
'url' => 'url of the link', // optional, will be processed by Url::to()
'template' => 'own template of the item', // optional, if not set $this->itemTemplate will be used
]
Method Details
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();
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']);
}
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));
}
}
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();
}
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 |
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]);
}
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);
}