アクションコントローラーのbeforeActionI()メソッドを使用してもいいのですが、これだとある程度処理が走った状態でわたされますので、セッションなどの設定をいじることはできません。
そのときにはそのものずばりのメソッドonBeginRequestを使えばリクエストが始まる前に処理を挟むことができます。
まずは/protected/config/main.phpを開き、
return array(
‘onBeginRequest’ => array(‘SiteRouter’, ‘setSession’),
と記述します。記述方式は’onBeginRequest’=>array(クラス名,メソッド名)です。
つぎに/protected/components/SiteRouter.phpを作成します。
<?php
class SiteRouter {
public function setSession() {
Yii::app()->theme = ‘mobile’; // テーマを変更
// セッションCookieなしに設定
ini_set(‘session.use_trans_sid’, 1);
ini_set(‘session.use_cookies’, 0);
ini_set(‘session.use_only_cookies’, 0);
}
}
このようにすればセッションが始まる前にセッション設定を変更することができます。
また、テーマ関係もここで設定しておくことも可能です。
参考URL
passing parameter to onBeginRequest – Yii Framework Forum