ビュー テンプレートを読み込んで、それを使用して電子メール メッセージの本文を作成することができました。コードは次の回答に似ています: How to render a mail template with layout in ZF2?
しかし今は、このコードをモジュールに移動して、アプリケーションの残りの部分が電子メールを送信できるようにしようとしています。すべてのメールでビューを使用できるように、できるだけ簡単/透過的にしたいと考えています。
基本的な質問は、テンプレートをレンダリングして電子メールを送信するために必要な情報を受け入れるようにコードを設定するにはどうすればよいかということです。
私はすでにトランスポート情報をサービスロケーター内に保持しており、電子メールの送信は正常に機能しています。私の主な関心事は、主にテンプレート リゾルバーに必要な厄介なコードです。
$view = new PhpRenderer();
$resolver = new TemplateMapResolver();
$resolver->setMap(array(
'mail' => __DIR__ . '/../../../view/communication/email/new-project.phtml'
));
$view->setResolver($resolver);
新しいモジュール内に保持されている電子メールのすべての *.phtml を使用しても問題ありません。アプリケーションからアドホック メールを送信する必要はありません (アプリケーション内部の通信を使用します)。
module.config.php 'view_manager' => 'template_map'
を使用して を作成する必要を回避する方法はありnew resolver()
ますか? その場合、そのマップにあるはずの名前付きテンプレートを受け入れるように電子メール コードを設定できます。
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
),