Код неправильный
После первой замены атрибутов, все остальные ссылки пойдут с этим атрибутом
Мое решение
<?php
namespace app\widgets;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
class Menu extends \yii\widgets\Menu
{
public $linkTemplate = '<a href="{url}"{attr}>{label}</a>';
public $linkOptions = [];
protected function renderItem($item)
{
$template = ArrayHelper::getValue($item, 'template', $this->linkTemplate);
$replace=[
'{label}' => $item['label'],
'{attr}'=>'',
'{url}'=>''
];
if (isset($item['url'])) {
$replace['{url}']=Html::encode(Url::to($item['url']));
}
if (isset($item['linkOptions'])) {
$replace['{attr}']=$item['linkOptions'];
}
return strtr($template, $replace);
}
}
Есть возможность добавить еще какие-либо атрибуты, классы например