2010 年 3 月 のアーカイブ

Symfonyでメール送信のデバッグをする




















Symfony1.4で、メールを送信するコードで、開発中にテンプレートの動作確認をしたい場合があります。Swift Mailerを使っているなら、すべての送信メールのあて先を上書きして特定のメールアドレスにすることができるので、やり方メモ。

The More with symfony book | メール | symfony | Web PHP Framework

設定の仕方は簡単で、アプリケーションのconfig\factories.ymlにdelivery_strategy: single_addressを指定すればOK。同時にdelivery_addressに、あて先メールアドレスを記述します。

dev:
  mailer:
    param:
      delivery_strategy: single_address
      delivery_address: dev@localhost

これで開発環境のローカルユーザdevにメールが送られます。

元々のヘッダ指定 toccbcc のどれに送られたメールなのかを確認できるよう、それぞれ X-Swift-ToX-Swift-CcX-Swift-Bcc というヘッダが追加されます。

あとはローカルのメールをMewとかで読めばOKです。

もちろんdelivery_addressを外部のメールアドレスに指定してもいいですよ。

PayPalの開発環境みたいにメールのSandBoxとか統合されないかなぁ。


複数の入力欄にまたがるValidationのエラーを特定の入力欄に表示させたい場合




















sfFormでSymfony 1.4のお話。

PostValidatorのエラーメッセージをどこに出せばいいんだ?という状況で使用できます。

class SomethingInputForm extends BaseForm
{
    public function configure()
    {
        // ...
        $this->validatorSchema->setPostValidator(
            new sfValidatorCallback(array('callback' => array($this, 'myCallbackFunc')))
        );
    }

    public function myCallbackFunc($validator, $values) {
        // 何かバリデーション
        if (!($values['input1'] == $values['input2'] == $values['input3'])) {
            $error = new sfValidatorError($validator, 'error message ...');
            throw new sfValidatorErrorSchema($validator, array('input1' => $error)); 
        }
        
        return $values;
    }
}

こんな感じで、input1のエラーとして出力できるので、テンプレートのエラー表示が楽になります。