Commit a252622d by Alexander Makarov

Merge pull request #3926 from umneeq/yii-widgets-breadcrumbs-enh

`yii\widgets\Breadcrumbs` enhacement
parents 24257e76 7889d1ee
...@@ -100,6 +100,7 @@ Yii Framework 2 Change Log ...@@ -100,6 +100,7 @@ Yii Framework 2 Change Log
- Enh: Added param `hideOnSinglePage` to `yii\widgets\LinkPager` (arturf) - Enh: Added param `hideOnSinglePage` to `yii\widgets\LinkPager` (arturf)
- Enh: Added support for array attributes in `in` validator (creocoder) - Enh: Added support for array attributes in `in` validator (creocoder)
- Enh: Improved `yii\helpers\Inflector::slug` to support more cases for Russian, Hebrew and special characters (samdark) - Enh: Improved `yii\helpers\Inflector::slug` to support more cases for Russian, Hebrew and special characters (samdark)
- Enh #3926: `yii\widgets\Breadcrumbs::$links`. Allows individual link to have its own `template` (creocoder, umneeq)
- Chg #2898: `yii\console\controllers\AssetController` is now using hashes instead of timestamps (samdark) - Chg #2898: `yii\console\controllers\AssetController` is now using hashes instead of timestamps (samdark)
- Chg #2913: RBAC `DbManager` is now initialized via migration (samdark) - Chg #2913: RBAC `DbManager` is now initialized via migration (samdark)
- Chg #3036: Upgraded Twitter Bootstrap to 3.1.x (qiangxue) - Chg #3036: Upgraded Twitter Bootstrap to 3.1.x (qiangxue)
......
...@@ -24,7 +24,13 @@ use yii\helpers\Html; ...@@ -24,7 +24,13 @@ use yii\helpers\Html;
* ~~~ * ~~~
* // $this is the view object currently being used * // $this is the view object currently being used
* echo Breadcrumbs::widget([ * echo Breadcrumbs::widget([
* 'itemTemplate' => "<li><i>{link}</i></li>\n", // template for all links
* 'links' => [ * 'links' => [
* [
* 'label' => 'Post Category',
* 'url' => ['post-category/view', 'id' => 10],
* 'template' => '<li><b>{link}</b></li>\n', // template for this link only
* ],
* ['label' => 'Sample Post', 'url' => ['post/edit', 'id' => 1]], * ['label' => 'Sample Post', 'url' => ['post/edit', 'id' => 1]],
* 'Edit', * 'Edit',
* ], * ],
...@@ -76,6 +82,7 @@ class Breadcrumbs extends Widget ...@@ -76,6 +82,7 @@ class Breadcrumbs extends Widget
* [ * [
* 'label' => 'label of the link', // required * 'label' => 'label of the link', // required
* 'url' => 'url of the link', // optional, will be processed by Url::to() * '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
* ] * ]
* ~~~ * ~~~
* *
...@@ -134,10 +141,11 @@ class Breadcrumbs extends Widget ...@@ -134,10 +141,11 @@ class Breadcrumbs extends Widget
} else { } else {
throw new InvalidConfigException('The "label" element is required for each link.'); throw new InvalidConfigException('The "label" element is required for each link.');
} }
$issetTemplate = isset($link['template']);
if (isset($link['url'])) { if (isset($link['url'])) {
return strtr($template, ['{link}' => Html::a($label, $link['url'])]); return strtr($issetTemplate ? $link['template'] : $template, ['{link}' => Html::a($label, $link['url'])]);
} else { } else {
return strtr($template, ['{link}' => $label]); return strtr($issetTemplate ? $link['template'] : $template, ['{link}' => $label]);
} }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment