1

最近の多言語プロジェクトでは、Twig を使用してさまざまな言語の電子メール テンプレートを保存しています。現在、ファイル名にそれぞれの言語を使用してテンプレートに名前を付けています(たとえばemail_en.txt.twig、それらを連結してコントローラーにロードします( Symfony2のドキュメントから適応された例):

public function indexAction($name, Request $request)
{
    $message = \Swift_Message::newInstance()
        ->setSubject('Hello Email')
        ->setFrom('send@example.com')
        ->setTo('recipient@example.com')
        ->setBody(
            $this->renderView(
                'HelloBundle:Hello:email_" . $request->getLocale() . ".txt.twig',
                array('name' => $name)
            )
        )
    ;
    $this->get('mailer')->send($message);

    return $this->render(...);
}

専用のサービスまたはファクトリを使用して、その種のロジックをより適切な方法で処理できることはわかっていますが、この問題がすでに誰かによって取り組まれているかどうか、およびどのように解決されたかを知りたいと思っています.

[編集] この質問が閉じられないようにするために、質問を言い換えます (できれば良い方へ)。if-chain や factory を使用せずにリクエスト言語に基づいて小枝テンプレートをレンダリングすることは可能ですか?

4

1 に答える 1

2

(ドキュメント) のイベント リスナーを使用し、そこで返されたテンプレートを変更します。kernel.view

FOSUserBundle のViewResponseListenerでインスピレーションを得ることができます。

于 2013-09-25T11:55:48.997 に答える