前にZend Frmaeworkで携帯サイトを作る(PCサイトを作った後で)3で、全角カタカナを半角にする方法を書いた。
が、これが、メール送信時にZend_Viewを使っていると困ったことになるかもしれない。
メールは半角カタカナ対応してないのに、フィルタが半角にしちゃうからカタカナが全部?とかに文字化けしてしまう。
が、これが、メール送信時にZend_Viewを使っていると困ったことになるかもしれない。
メールは半角カタカナ対応してないのに、フィルタが半角にしちゃうからカタカナが全部?とかに文字化けしてしまう。
ということでメール送信時にはフィルタを一回切らないといけない。
Zend FrameworkのZend_ViewをSmartyにで作ったSmartyのラッパクラスに以下のメソッドを追加。
/**
* filterをロードします。
*/
public function loadFilter($filter, $name)
{
$this->_smarty->load_filter($filter, $name);
}
/**
* outputfilterを解除します。
*/
public function unloadOutputFilter($name)
{
$this->_smarty->unregister_outputfilter($name);
}
メールの送信前後でこんな感じで使う。
hogeAction
public function hogeAction() {これでOK。のはず。
~前略~
// メールは半角カタカナが使えないのでフィルタを一回きる
$this->view->unloadOutputFilter('convert_hankakukana');
$config = Utils::getConfig();
$mail = new Hmr_Mail_Client();
$mail->addTo($row->mobile_email);
$mail->setFrom($config->mail->from);
$mail->setSubject($config->mail->subject);
$mail->send($this->view->render('mailbody/hoge.tpl'));
$db->commit();
// 一回きったフィルタを復活させる。
$this->view->loadFilter('output', 'convert_hankakukana');
}
コメントする