You can assign different layouts to different users using following filter class
1. Add LayoutFilter.php to your protected/components/ folder
class LayoutFilter extends CFilter {
protected function preFilter($filterChain) {
// logic being applied before the action is executed $roles = Yii::app()->user->getState('roles');
if (!is_array($roles)) $roles = array();
if (in_array(User::ROLE_ADMIN, $roles)) {
$filterChain->controller->layout = 'admin/column2'; }
else {
$filterChain->controller->layout = '//layouts/column2'; }
return parent::preFilter($filterChain); }
protected function postFilter($filterChain) {
// logic being applied after the action is executed return parent::postFilter($filterChain); }
} 2. Update protected/components/Controller.php and add following filters
public function filters() {
return array( 'rights', array('application.components.LayoutFilter'), ); } 3. Update all controllers and add following filters
public function filters() {
return parent::filters() + array( 'postOnly + delete', // we only allow deletion via POST request ); }