気を抜くと技術ネタが皆無になり、漫画と音楽だけのブログになりそうなので、簡単だけどメモを。
CakePHPで携帯サイトを作る時に便利なのが、Ktai Library。
Works Blog | Ktai Library for CakePHP1.2
CakePHPで日本語メールを送る時に便利なのが、Qdmail。
PHP高機能日本語メール送信ライブラリ・文字化けフリー - Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte
で、二つを同時に使う時に気をつけなくちゃいけないのが
メールを使う時は、Ktai Libraryを無効化した方が良い
っつうこと。
携帯用のメールとPC用のメールって何か変更しなくちゃいけないかなと考えたんだけど、半角カタカナにしたら面倒なことになりそうだし、文字コードも一緒だし。
なので、メールを送信する箇所だけ外したいわけ。
僕の場合は、前提としてAppControllerで以下の様な設定をしております。
# app/app_controller.php
function beforeFilter() {
~ 略~
if (in_array('Ktai', $this->components)) {
if($this->Ktai->is_ktai()){
Configure::write('Ktai', array(
'use_img_emoji' => true, //画像絵文字を使用
'input_encoding' => KTAI_ENCODING_UTF8, //入力をUTF-8に変更
'output_encoding' => KTAI_ENCODING_SJIS, //出力をShift-JISに変更
'output_convert_kana' => 'knr', //半角変換
'output_auto_encoding' => true, //自動変換
));
$config = Configure::getInstance();
array_unshift($config->viewPaths, ROOT.DS.APP_DIR.DS.'views_mobile'.DS);
// SJIS -> UTF8
if(!empty($this->data)) {
mb_convert_variables( 'UTF-8', 'SJIS-win' ,$this->data);
}
}
}
~ 略~
}
簡単にいうと
1)携帯だったら、画像絵文字を使っちゃって!
2)携帯だったら、文字コードの変換(UTF-8→Shift-JIS)を自動でやっちゃって!
3)携帯だったら、文字を半角にしちゃって!
4)携帯だったら、viewのディレクトリ変えちゃって!
5)携帯だったら、フォームの内容とか文字コード変えちゃって!
っつうことなんだけど、いろいろ余分なものも含まれているので、view側で再設定してあげる。
例えばこんな感じ。
# app/view_mobile/layouts/email/text/default.ctp
<?php $ktai->options['use_img_emoji'] = false; ?>
<?php $ktai->options['output_convert_kana'] = false; ?>
<?php $ktai->options['output_auto_encoding'] = false; ?>
各controllerのactionで切り分けてもいいと思うんだけど、ぶっちゃけメール送信部分だけoptionを変更するのが面倒なので。
まあ、MVC的にはアレですが。