symfony1.1でsfMailViewを使う

またまたバージョンアップネタ。しかも随分既知っぽいw
symfony1.0系では、Actionsクラスの中で下記のように書くと。。。

$this->sendEmail('mail','sendPassword');

mailモジュールのsendPasswordアクションを呼び出してくれるまでは普通のforwardと同じなのですが、sfMailをnewして、$this->mailにぶち込んでやると、viweクラスが、「sfPHPView」ではなく「sfMailView」を利用して、「sfMailView」は最終的に$this->mail->send();を呼び出してメールを送信してくれるという、ちょっと変わった機能がありました。

ただ1.1にバージョンを上げてみたら、メールの送信部分を担うものがphpmailerから、SwiftMailにチェンジになってるんですよ。これが、ただそれはCompat10プラグインをONにすれば従来の書き方でも対応できるらしいんですが、上記のsendEmailがどうやら「sfMailView」を使ってくれないらしいんですよ。

調べてみたら、Controllerクラスの中で、getPresentaitonForとかいうメソッドを呼んでいて、引数として、viewクラス名を渡せばそのviewクラスを利用してくれるっぽいんですが、どうやら、1.1ではそれが出来てなくて、結局最終的に、「sfPHPView」を使いやがって、メール文言にlayoutが混ざるわ、sendも呼び出しくれないから、どうしたもんかなと頭をひねってたら、既に、おやじ組の中の人が、解決策を示してくれてましたw

all:
  view_class: sfMail

どうやら、sfPHPView以外を使いたい場合には、module.ymlの中で、下記のように書いてあげれば、そのviewを使ってくれるっぽいですね。

正直助かりました。さすがおやじ組の中の人は違いますね。流石です。

■参考URL