Hi,
is possible to make 2 different layouts for 2 users? User1 have layout1 and user2 have layout2.
Thanx!
Hi,
is possible to make 2 different layouts for 2 users? User1 have layout1 and user2 have layout2.
Thanx!
In the constructor of your base controller class, set "layout" property of controller according to the user info.
thanx for reply
Hi,
I have still problem. When I set "layout" property in action all work fine but when I try create constructor I have error:
CException
Description
AdminController cannot find the requested view "login".
My class:
class AdminController extends CController { function __construct() { $this->layout = 'admin'; } /** * This is the default 'index' action that is invoked * when an action is not explicitly requested by users. */ public function actionIndex() { // renders the view file 'protected/views/site/index.php' // using the default layout 'protected/views/layouts/main.php' $this->render('index'); } /** * Declares class-based actions. */ public function actions() { return array( // captcha action renders the CAPTCHA image 'captcha'=>array( 'class'=>'CCaptchaAction', 'backColor'=>0xEBF4FB, ), ); } /** * Displays a login form to login a user. */ public function actionLogin() { $user=new LoginForm; // collect user input data if(isset($_POST['LoginForm'])) { $user->attributes=$_POST['LoginForm']; // validate user input and redirect to previous page if valid if($user->validate()) $this->redirect($this->createUrl('index')); } // display the login form $this->layout = 'login'; $this->render('login',array('user'=>$user)); } /** * Logout the current user and redirect to homepage. */ public function actionLogout() { Yii::app()->user->logout(); $this->redirect(Yii::app()->homeUrl); } }
Please check the constructor's signature. You should not change it, and you must call the parent constructor. The API doc doesn't say this clearly. I will add an additional init method for this purpose. Thanks.
Thanx for help qiang.
Yet I have:
... private $_id; /** * @param string id of this controller */ public function __construct($id) { $this->_id=$id; parent::__construct($id); $this->layout = 'admin'; } ...
Earlier I tried call parent constructor but too didn`t work. Maybe private variable helped?
Now work, thanx.
It's because you should call the parent constructor with the needed $id parameter, which tells the controller which action is being requested.