Объединение префиксной маршрутизации с несколькими макетами должно решить вашу проблему.Как отметил в комментариях Joep, действия в ваших контроллерах следуют простой схеме именования admin_index(), hotel_admin_index() and guest_index()
, которая упрощает организацию вашего кода.
Вы можете использовать следующий код в вашем AppController для обработки переключения между макетами (то есть default.ctp, admin.ctp и hotel_admin.ctp).
function beforeRender() {
if (isset($this->params['prefix']) {
if ($this->params['prefix'] == 'admin') {
$this->layout = 'admin';
} else if ($this->params['prefix'] == 'hotel_admin')
$this->layout = 'hotel_admin';
}
}
}
Вы можете даже взять егошаг вперед и разделить все статические ресурсы (т.е. /img/admin/new-blah.png)