<script type="text/template">...</script>
/**
* Returns the roles that are assigned to the user via [[assign()]].
* Note that child roles that are not assigned directly to the user will not be returned.
* @param string|integer $userId the user ID (see [[\yii\web\User::id]])
* return Role[] all roles directly or indirectly assigned to the user. The array is indexed by the role names.
*/
public function getRolesByUser($userId);
Вот вам пример, контроллеры админки с одного проекта c2n.me/3nwAO4i c2n.me/3nwAUTs
Обратите внимание, что разные типы действий(CRUD) разделены. Тут в этом есть смысл: автоматическое построение дерева разделов, автоматическая генерация правил роутинга, права доступа и прочее. И все это автоматизировано и шикарно работает.
Выбираете для себя тот вариант, который самый удобный и удовлетворяет требованиям вашей системы.