mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-03 22:32:40 +08:00
Fixes #6106: Added ability to specify encode for each item of yii\widgets\Breadcrumbs
This commit is contained in:
@ -21,6 +21,7 @@ Yii Framework 2 Change Log
|
||||
- Bug #6736: Removed `Content-Transfer-Encoding` from the list of default download headers (DaSourcerer)
|
||||
- Enh #4502: Added alias support to URL route when calling `Url::toRoute()` and `Url::to()` (qiangxue, lynicidn)
|
||||
- Enh #5194: `yii\console\controllers\AssetController` now handles bundle files from external resources properly (klimov-paul)
|
||||
- Enh #6106: Added ability to specify `encode` for each item of `yii\widgets\Breadcrumbs` (samdark)
|
||||
- Enh #6247: Logger and error handler are now using slightly less memory (stepanselyuk, samdark)
|
||||
- Enh #6398: Added support for specifying dependent component in terms of a configuration array for classes such as `DbCache` (qiangxue)
|
||||
- Enh #6434: Added `yii\behaviors\SluggableBehavior::immutable` to support keeping the generated slug unchanged (trntv)
|
||||
|
||||
@ -101,6 +101,15 @@ class Breadcrumbs extends Widget
|
||||
* ]
|
||||
* ```
|
||||
*
|
||||
* Since 2.0.2 each individual link can override global [[encodeLabels]] param like the following:
|
||||
*
|
||||
* ```php
|
||||
* [
|
||||
* 'label' => '<strong>Hello!</strong>',
|
||||
* 'encode' => false,
|
||||
* ]
|
||||
* ```
|
||||
*
|
||||
*/
|
||||
public $links = [];
|
||||
/**
|
||||
@ -150,8 +159,14 @@ class Breadcrumbs extends Widget
|
||||
*/
|
||||
protected function renderItem($link, $template)
|
||||
{
|
||||
$encodeLabel = $this->encodeLabels;
|
||||
if (array_key_exists('encode', $link)) {
|
||||
$encodeLabel = $link['encode'];
|
||||
unset($link['encode']);
|
||||
}
|
||||
|
||||
if (array_key_exists('label', $link)) {
|
||||
$label = $this->encodeLabels ? Html::encode($link['label']) : $link['label'];
|
||||
$label = $encodeLabel ? Html::encode($link['label']) : $link['label'];
|
||||
} else {
|
||||
throw new InvalidConfigException('The "label" element is required for each link.');
|
||||
}
|
||||
|
||||
@ -106,6 +106,21 @@ class BreadcrumbsTest extends \yiiunit\TestCase
|
||||
$this->assertEquals("<li>My-<br>Test-Label</li>\n", $unencodedValue);
|
||||
}
|
||||
|
||||
public function testEncodeOverride()
|
||||
{
|
||||
$link = ['label' => 'My-<br>Test-Label', 'encode' => false];
|
||||
$method = $this->reflectMethod();
|
||||
$result = $method->invoke($this->breadcrumbs, $link, $this->breadcrumbs->itemTemplate);
|
||||
|
||||
$this->assertEquals("<li>My-<br>Test-Label</li>\n", $result);
|
||||
|
||||
//without encodeLabels
|
||||
$this->breadcrumbs->encodeLabels = false;
|
||||
$unencodedValue = $method->invoke($this->breadcrumbs, $link, $this->breadcrumbs->itemTemplate);
|
||||
|
||||
$this->assertEquals("<li>My-<br>Test-Label</li>\n", $unencodedValue);
|
||||
}
|
||||
|
||||
public function testRenderItemWithLabelAndUrl()
|
||||
{
|
||||
$link = ['label' => 'My-<br>Test-Label', 'url' => 'http://localhost/yii2'];
|
||||
|
||||
Reference in New Issue
Block a user