めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

CakePHP 1.2でのモバイル(携帯)対応のためのヘルパー

CakePHPによる実践Webアプリケーション開発」に少しだけ書かれています。書籍で気になったのは、「UTF-8を利用する」というところ。3G携帯だけ対応するのはいいとしても、UTF-8だけ、というのはなんだか気になるのです。Shift-jisじゃなくていいのかなあ?と疑問が残ります。そこで、ヘルパーを作ってみました

このヘルパーなんですが、viewの出力内容を書き換えるように動きます。
そのため、テンプレートファイルに全角カタカナでなんか書いていても、半角に変換されます。また、テンプレートファイルは、UTF-8じゃないとダメです。

【Ktai】「Ktai Library」バージョンアップ少し延期のお知らせとviewの話 | ECWorks Blog」「CakePHP 携帯専用サイトを作成する | Sun Limited Mt.」が非常に参考になりました。

テスト環境

app/views/helplers/mobile.php

<?php
class MobileHelper extends Helper {
    function afterLayout() {
		$view =& ClassRegistry::getObject('view');
		mb_internal_encoding('UTF-8');
		$view->output = mb_convert_kana($view->output, 'k');
		$view->output = mb_convert_encoding($view->output, 'SJIS','UTF-8');
    }
}
?>

テスト用データ(SQL

/* まず、postsテーブルを作成します。 */
CREATE TABLE posts (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(50),
    body TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

/* それから、テスト用に記事をいくつか入れておきます。 */
INSERT INTO posts (title,body,created)
    VALUES ('タイトル', 'これは、記事の本文です。', NOW());
INSERT INTO posts (title,body,created)
    VALUES ('またタイトル', 'そこに本文が続きます。', NOW());
INSERT INTO posts (title,body,created)
    VALUES ('タイトルの逆襲', 'こりゃ本当に面白そう!うそ。', NOW());

書籍

CakePHPによる実践Webアプリケーション開発

CakePHPによる実践Webアプリケーション開発