CakePHP 1.3以降でQdmailComponentを使う場合の修正箇所

ちょっとひっかかったのでメモ。

PHP から日本語でメールを送信するときは
Qdmail によくお世話になってます。
よくお世話になってますっていうか、
もうこれしか使ってない。

もちろんプレーンでも使うし
CakePHP のコンポーネントとしても使えるので
実に助かりますありがとうございます。

ただ、これを書いている時点での最新版 (1.2.6b)を
CakePHP 1.3以降で使うときは少々修正がいるみたい。

そのまま使うとこういうエラーが出ます。

Fatal error: Call to undefined method View::renderElement() in /***/app/controllers/components/qdmail.php on line 3823

該当箇所はここ。

$content = $view->renderElement( $this->view_dir . DS . $type . DS . $this->template , array('content' => $content ) , true );

CakePHP 1.2 まで使われていた
View::renderElement() は1.3で廃止されて、
代わりに View::element() を使うことになっているので

1.2から1.3への移行ガイド :: 付録 :: マニュアル :: 1.3コレクション :: The Cookbook

View::renderElementは削除されました。 代わりにView::element()を使用してください。

この部分を修正。

$content = $view->element( $this->view_dir . DS . $type . DS . $this->template , array('content' => $content ) , true );

renderElement() が使われてるのはここだけなので
この1箇所を書き換えるだけ。
これで問題なく動きました。

繰り返しますが、Qdmail 本当に便利。
繰り返しますが、本当にありがとうございます。

あわせて読みたい

今回の話と直接関係ないんだけど
CakePHP で Qdmail を使うときはこれにも気をつけたいですね。

  • このエントリーをはてなブックマークに追加