PHP
FuelPHP

【fuelphp】PC、ガラケー、スマホでviewsをわける

More than 1 year has passed since last update.

fuelphpでPC、ガラケー、スマホサイトを構築した際にコントローラーは共通で
viewsは分ける必要になったのでそのときに使った方法をメモで残しておこうと思います。

views配下にデバイス毎のフォルダ作成

 app/views/pc → PC用
 app/views/mobile → ガラケー用
 app/views/sp → スマホ用

Viewクラスの拡張

app/classes/view.php
class View extends \Fuel\Core\View
{
    public function set_filename($file)
    {
        if ('ガラケー判定')
        {
            // ガラケーサイト
            return parent::set_filename('mobile/' . $file); 
        }
        if ('スマホ判定')
        {
            // スマホサイト
            return parent::set_filename('sp/' . $file); 
        }
        // PCサイト
        return parent::set_filename('pc/' . $file); 

    }
}

※ユーザーエージェントの判定はfuelphpのcoreクラスではスマホの判定が出来ないので自作する必要があります。

coreを拡張したのでbootstrap.phpを書き換える。

app/bootstrap.php
Autoloader:: add_classes(
    'View' => APPPATH . 'classes/view.php',
);

※書き換えるとfuelphpが標準で用意しているエラー画面(500.php、404.php)が見つからないのでapp/views/pcなどにコピーするなりしてください。

サンプル

app/classes/controller/sample.php
class Controller_Sample extends Controller {
    public function action_index()
    {
        return View::forge('sample/index');
    }
}

View内でユーザーエージェントを見てviewsを切り替えてくれます。
コントローラーでviewを意識しなくて済むのでスッキリです。

参考サイト