В общем решил пока таким способом, посмотрим как он себя зарекомендует.
public function isActive($alias)
{
$url = $_SERVER["REQUEST_URI"];
//Маршрут по default
if($alias == 'site/index' and $url == '/')
return true;
//Короткие маршруты категорий
if(strpos($url, $alias) !== false)
return true;
else
return false;
}
//Шаблон для вывода меню в виде дерева
private function tplMenu($item)
{
$items = [
[
'label' => $item['name'],
'url' => [$item['alias']],
'linkOptions' => ['title' => $item['title']],
'active'=> $this->isActive($item['alias']),
],
];
if(isset($item['childs']))
{
$label = ['label' => $item['name'],];
foreach ($item['childs'] as $key => $val)
$items['items'][] = ['label' => $val['name'], 'url' => $val['alias'], 'linkOptions' => ['title' => $val['title']],];
$items = array(array_merge($label, $items));
}
return $items;
}