Игры в модуль, подмодуль в Yii

Поскольку Yii дает возможность из коробки использовать «любую» вложенность модулей, я решил опробовать написать админку в виде модуля и подмодулей.
Единый лейаут для модуля и его подмодулей.
Возникла логичная необходимость в том, что леайт модуля должен использоваться и в его подмодулях. Сделал я это следующим образом:

class AdminModule extends BaseWebModule {
	public function init() {
            Yii::app()->setViewPath($this->getViewPath());
	}
}

Генерация ссылок в подмодуль.
Из коробки ий может генерировать ссылки в в подмодуль только по абсолютному пути:

$this->createUrl('/module/submodule/controller/action')

НО! Возникают проблемы при подключение в подмодулях CGridView и т.п. Для этого я создал базовый контроллер для всех контроллеров в AdminModule и его подмодулей, переопределив метод CController.createUrl следующим образом:

    public function createUrl($route,$params=array(),$ampersand='&') {
        if($route==='')
            $route=$this->getId().'/'.$this->getAction()->getId();
        else if(strpos($route,'/')===false)
            $route=$this->getId().'/'.$route;
        if($route[0]!=='/') {
            if(($module=$this->getModule())!==null) {
                $route = $module->getId().'/'.$route;
                $route = $this->_getParentModuleRecursive($module, $route);
            }
        }
    
        return Yii::app()->createUrl(trim($route,'/'),$params,$ampersand);
    }
    
    private function _getParentModuleRecursive(CModule $module, $route) {
        if(($parentModule = $module->getParentModule()) !== null) {
            $route = $parentModule->getId().'/'.$route;
            $this->_getParentModuleRecursive($parentModule, $route);
        }
        return $route;
    }

По мере моего изучения возможности Yii — модуля, подмодуля буду пополнять данную заметку различной информацией.