Ktaiライブラリ入門
cakephp 1.2.6で開発してます。
Ktaiライブラリを使ってみました。そのメモ
お手軽に携帯の対応ができるのでオススメです。ライブラリの公開感謝です!
画面出力はSJIS-winで、Cake側は全てViewファイルも含めてUTF-8です。モバイル用のコントローラは独立させてます。
画面出力の文字コード変換は、ヘルパー側でやるようなので、絵文字使わなくてもヘルパーの設置は必須です。vendorsは/app/vendorsじゃなくて、appと同じ位置にあるvendorsディレクトリなので注意が必要です。
1. ktai libraryをダウンロードして設置
ここからダウンロード。
下記のように設置
/app/app_controller.php ← 既存ファイルがある場合は、redirect()の内容だけをコピー
/app/controller/component/ktai.php
/app/config/ktai_session.php
/app/views/helpers/ktai.php
/vendrs/ecw/ ←ecwフォルダごとコピー
2.コントローラを設定
<?php class HogeMobilesController extends AppController { var $name = 'HogeMobiles'; var $uses = array('Hoge'); var $helpers = array('Html', 'Form', 'Ktai'); var $viewPath = 'hoge_mobile'; var $layout = 'mobile'; var $components = array( 'Ktai'); var $ktai = array( 'enable_ktai_session' => true, //セッション使用を有効にします 'use_redirect_session_id' => false, //リダイレクトに必ずセッションIDをつけます 'imode_session_name' => 'csid', //iMODE時のセッション名を変更します 'input_encoding' => 'UTF-8', //入力をUTF-8に変更 'output_encoding' => 'SJIS-win', //出力をSJIS-winに変更 'output_auto_encoding' => true, //出力を自動変更(KtaiHelperの中で) );
3. Viewファイルを編集
viewファイルはコントローラ側で設定した、下記のようになります。
レイアウトファイル: views/layout/mobile.ctp
各viewファイル: views/hoge_mobile/*.ctp
レイアウトファイル、各viewファイルはUTF-8で保存します。ただし、レイアウトファイルの中で、charsetをSJISに変更します。
<head> <?php echo $html->charset('Shift_JIS'); ?> </head>
基本的にはこれでOKです。これだけでこのコントローラはモバイル対応になりました。セッションはURLの中に自動で付与され、Viewの文字コードはSJISになります。
最後に、POSTされるデータはSJISで来るので、php.iniで自動変換をかけるか、beforeFilterで$this->dataをコンバートする必要があります。
各コントローラのbeforeFilterで下記のようにすればOK.複数コントローラで使う場合はコンポーネント化したほうが良いです。
function beforeFilter() { if(!empty($this->data)) { mb_convert_variables( 'UTF-8', 'SJIS-win' ,$this->data); } parent::beforeFilter(); }
beforeFilterで自前でやる場合は、昔書いた記事の最後にあるので参考にしてください。
http://d.hatena.ne.jp/cakephper/20081001/1222866102
追記
core.phpでdebug値を0にしておかないと、セッションIDの自動付与は動かないっぽいので注意が必要です。