お手上げドットコム

人生お手上げ気味なバフのぶろぐ。次の目標は300記事達成。

FuelPHPでPC・モバイルの処理振り分けの話。

FuelPHPでのPC・モバイル振り分けの話です。

CakePHPで言うAppコントローラ的なベースとなるコントローラを既に作成しているのであればそこでやっても構わないと思うのですが、とりあえずここではデバイスコントローラ的なものを作ります。

class Controller_Device extends Controller {

    public $device_type = null;
     function before() {
        parent::before();
        if (Agent::is_mobiledevice()) {
            $this->device_type = 'mobile';
        } else {
            $this->device_type = 'pc';
        }
    }


}

みたいな感じにしておいて…。
各コントローラで…
(ここではHogeコントローラ。)

class Controller_Hoge extends Controller_Device {

}

みたいな感じにDeviceコントローラを継承する事で、デバイスコントローラで代入したデバイスタイプを利用可能です。
それを元に判定してビューを切り替えるか、もしくは、ビューのディレクトリをPC用モバイル用でわけてしまって、ディレクトリ名をdevice_typeに与える文字列に対応させておけば割と簡単に割り振れる気がします。

ビューの中で「PCでのみ表示する項目」「モバイルでのみ表示する項目」といった細かい切り替えをしたい場合はHogeコントローラのbeforeメソッドで、set_global しちゃ…。
って感じで。

余談

ちょっと話は変わりますが、この記事中でも利用しているFuelphpのAgentクラス、非常に重いようで。

初めてのフレームワークとしてのFuelPHP の著者さんが、

FuelPHPのAgentクラスが重い問題と暫定的な対処方法 — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something

という情報を公開して下さっているので、一読した上で対応しておいたほうが良いかもしれません。
放置してたらmemory_limit の設定値の関係でちょっと酷い目にあいました。