FuelPHP 1.5 スマホ用テンプレートに切り替える

 

■FuelPHPで保守性の高いマルチデバイス対応を考える

http://shiroyama.us/blog/2012/12/08/fuelphp%E3%81%A7%E4%BF%9D%E5%AE%88%E6%80%A7%E3%81%AE%E9%AB%98%E3%81%84%E3%83%9E%E3%83%AB%E3%83%81%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E5%AF%BE%E5%BF%9C%E3%82%92%E8%80%83%E3%81%88%E3%82%8B/

 

上記ブログの方を参考にさせていただきました。

 

■課題

・スマホの見た目にしたい

・テンプレートをわけるんだろうけど、どうやるかワカンネ

・ググったら上記ブログを発見。簡単に解決。最高っす。

 

■対応内容

①まずはbootstrapにviewを読むCoreファイルの読み込み先を記述

vi bootstrap.php

Autoloader::add_classes(array(
        // Add classes you want to override here
        'View' => APPPATH.'classes/view.php', // これを追加
));

 

 

②view.phpを追加

ガラケーとか考えるの面倒なので、全部モバイル扱いということで

 /mb配下にモバイルテンプレートを突っ込むこととした。

ipadはPC扱いにした。

 

cd classes

vi view.php

<?php
class View extends \Fuel\Core\View
{
    public function set_filename($file) {
        if (Agent::browser() != "iPad" && Agent::is_mobiledevice()){
            $file = 'mb/' . $file;
        }
        return parent::set_filename($file);
    }
}

 

 ③最後にviews配下にディレクトリを配置

cd views

mkdir mb

cp template.php mb/  ←tenplate.phpもmb配下を見に行くようになる。

 

以上でモバイル端末はmb配下のテンプレートを読むようになる!

 

FuelPHP 1.5 データベース接続設定

■課題

fuel/app/config/development/db.php

に接続先の設定をしているのに。

なぜかMysqlにつながらない。

tmp/mysql.sockを見に行くからだ。

私の環境では/var/lib/mysql/mysql.sockにソケットを置いている。

socketの向き先を変更しなければならない。

 

■対応方法

socket='/var/lib/mysql/mysql.sock'を

指定すればよいかと思ってやってみたが、ダメだった。

以下のようにdsn内に設定を記述したら動いた。

 

vi fuel/app/config/development/db.php

return array(
        'default' => array(
                'connection'  => array(
                        'dsn'           => 'mysql:host=localhost;dbname=sample_db;unix_socket=/var/lib/mysql/mysql.sock',
                        'username'      => 'hoge',
                        'password'      => 'fuga',
                ),
        ),
);

 

FuelPHP 1.5 インストール

■環境
php5.4.14
fuelphp1.5 ←これを入れる。

DocumentRoot /home/game/app/public

■対応内容
cd /home
mkdir game
cd game
wget --secure-protocol=auto --no-check-certificate http://fuelphp.com/files/download/19
unzip fuelphp-1.5.zip -d app
cd app

vi fuel/app/config/config.php
以下を配列の中に追加
return array(
    'index_file' => false,
    'language' => 'ja',
    'locale' => 'ja_JP.UTF-8',
    'default_timezone' => 'Asia/Tokyo',
);

php oil refine install
完了

必要であればApacheをrestart

php のバージョンを同居させる簡単な方法


■課題
php5.2はソースからインストールされている状態。

この状態でphp5.4をソースからインストールすると

パスが勝手に5.4のほうを向くようになってしまう。

php5.4はmake installしてしまったので

切り戻しなどもできなくて困った。

php5.2からmake installしなおしたらパスが戻った。

ならばcpしているソケットファイルで向き先が変わっていると予想。

以下の対応方法で同居(というか切り替え可能状態)に成功。

 

■対応方法

問題はapache/modules/libphp5.soが上書きされてしまうために起こる現象。

つまり、libphp5.soを切り替えられるようにしてやればよい。

 

make  したphp5.4からソケットファイルをもっていく。

cp .libs/libphp5.so /usr/local/apache2.2.17/modules/libphp5-php5.4.14.so

もともとあったlibphp5.soをリネームして切り替えられるようにしておく。

cd /usr/local/apache/modules

-rwxr-xr-x  libphp5-php5.2.14.so ←もともとあったソケットをリネーム
-rwxr-xr-x  libphp5-php5.4.14.so ←コピーしてもってくる
lrwxrwxrwx  libphp5.so -> libphp5-php5.2.14.so ←シンボリックリンク

 

このシンボリックリンクを切り替えれば向き先が変わる。

 ln -snf libphp5-php5.4.14.so libphp5.so

最後にapache restartするのを忘れずに。

TitaniumのPickerは日本語対応してくれている

iphoneエミュレータで見たときは英語表記になってしまっていたため、「だめかなー」とおもっていたが、

実機に入れたら勝手に日本語対応になっていた。

iphoneエミュの言語設定を日本語にすれば、エミュでも日本語でできるらしい。

意外とはまった。