Yiiでリクエストが始まる前に処理をしたい時には

[`tweetmeme` not found]
[`evernote` not found]
このエントリーをはてなブックマークに追加
はてなブックマーク - Yiiでリクエストが始まる前に処理をしたい時には
Facebook にシェア
[`yahoo` not found]
[`livedoor` not found]
[`friendfeed` not found]
[`grow` not found]

アクションコントローラーの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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA