The URl route of an action can be specified with just the ActionID ( http://www.yiiframew…reateUrl-detail : "[color="#222222"][font="Arial, sans-serif"][size="3"]If the ControllerID is not present, the current controller ID will be prefixed to the route.").[/size][/font][/color]
[color="#222222"][font="Arial, sans-serif"] [/font][/color]
[color="#222222"][font="Arial, sans-serif"][size="3"]However, CMenu->isItemActive does not prefix the current controller to the route to check if the item is active.[/size][/font][/color]
[color="#222222"][font="Arial, sans-serif"] [/font][/color]
[color="#222222"][font="Arial, sans-serif"][size="3"]Adapting the code as follows makes it work:[/size][/font][/color]
[font="Arial, sans-serif"][size="1"][color="#222222"]
protected function isItemActive($item,$route)
{
if(isset($item['url']) && is_array($item['url']))
{
if(strpos($url=$item['url'][0],'/')===false)
$url=Yii::app()->controller->getId().'/'.$url;
}
if(isset($url) && !strcasecmp(trim($url,'/'),$route))
{
unset($item['url']['#']);
if(count($item['url'])>1)
{
foreach(array_splice($item['url'],1) as $name=>$value)
{
if(!isset($_GET[$name]) || $_GET[$name]!=$value)
return false;
}
}
return true;
}
return false;
}
[/color][/size][/font]