CakePHP1.2でKtai LibraryとQdmailを使う時の注意メモ

気を抜くと技術ネタが皆無になり、漫画と音楽だけのブログになりそうなので、簡単だけどメモを。

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的にはアレですが。

コメント

アーカイブ

2010

2009

2008

2007

コンタクト

longkey1[at]gmail[dot]com