Symfony FOSUserBundle覆盖细枝模板-压缩文档示例。卡住了

Symfony FOSUserBundle覆盖细枝模板-压缩文档示例。卡住了,symfony,twig,fosuserbundle,Symfony,Twig,Fosuserbundle,我试图了解Twig的FOSUserBundle实现,以及Symfony2的相对新手。我想覆盖默认实现,并使用fos_user.mailer.twig_swift mailer服务发送html电子邮件 我的环境:Symfony 2.4.1 "require": {... "symfony/swiftmailer-bundle": "~2.3", "friendsofsymfony/user-bundle": "*" 这就是我的困境:基于FOSUserBundle文档()

我试图了解Twig的FOSUserBundle实现,以及Symfony2的相对新手。我想覆盖默认实现,并使用fos_user.mailer.twig_swift mailer服务发送html电子邮件

我的环境:Symfony 2.4.1

    "require": {...
    "symfony/swiftmailer-bundle": "~2.3",
     "friendsofsymfony/user-bundle": "*"
这就是我的困境:基于FOSUserBundle文档()。让我心碎的是:

{%include'AcmeDemoBundle:User:重置_email.html.twig%}

按照他们的指示,我得到:

 " Unable to find template "PP2UserBundle:User:resetting_email.html.twig"  - (PP2UserBundle is my implementation of AcmeDemoBundle)
这个错误对我来说几乎是有道理的。我不知道在哪里可以找到那个模板。为了防止崩溃,我删除了include并添加了一些html代码来测试它是否看到了我的模板并发送了电子邮件。确实如此,我收到了一封在
{%block body\u html%}
中写着“Hi”的漂亮电子邮件。
{%block subject%}
也会呈现。但是
{%block body\u text%}
是空的。噢

这是我的密码。如果有人能分享一些见解,我将不胜感激

服务已注册,看起来正常。(尽管我对yml实现有疑问)我从另一篇文章中学习了xml->yml翻译

服务.yml

 fos_user.mailer.twig_swift:
    class: FOS\UserBundle\Mailer\TwigSwiftMailer
    arguments:
        - @mailer
        - @router
        - @twig'
        - { template: { confirmation: %fos_user.registration.confirmation.template%, resetting: %fos_user.resetting.email.template% }, from_email: { confirmation: %fos_user.registration.confirmation.from_email%, resetting: %fos_user.resetting.email.from_email% } }
Config.yml看起来合乎逻辑

   service:
        mailer: fos_user.mailer.twig_swift
resetting:
        email:
            template: PP2UserBundle:User:resetting.email.twig
并将我的模板放置在参考资料/视图/用户中

重置.email.twig

{% block subject %} Test Resetting your password{% endblock %}

{% block body_text %}
{% autoescape false %}
Hello {{ user.username }} !

You can reset your email by accessing {{ confirmationUrl }}

Greetings,
the Acme team
{% endautoescape %}
{% endblock %}

{% block body_html %}
<h1> hi </h1>
{% include 'PP2UserBundle:User:resetting_email.html.twig' %}
{% endblock %}
{%block subject%}重置密码测试{%endblock%}
{%block body_text%}
{%autoescape false%}
你好{{user.username}}!
您可以通过访问{{confirmationUrl}重置电子邮件
问候语,
Acme团队
{%endautoescape%}
{%endblock%}
{%block body_html%}
你好
{%include'PP2UserBundle:User:重置_email.html.twig%}
{%endblock%}
同样,如果我取出{%include'PP2UserBundle:User:resoting_email.html.twig'%},我会得到一个很好的“hi”,但其他几乎没有

感觉我应该在视图/重置中扩展fosuser模板(或包括它们),但我看不出是哪个。我错过了一些东西


再次感谢。

您可以使用twigs标签使用自己的电子邮件模板

例如,您在Acme:Email:Email.html.twig中有一个模板:

{# src/Acme/DemoBundle/Resources/views/Email/email.html.twig #}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
    <table>
        <tr>
            <td>
                {% block body_text %}{% endblock %}
            </td>
        </tr>
    </table>
</body>
</html>

PP2UserBundle:User:reseting.email.html.twig
表示模板应位于
YourBundleFolder/Resources/views/User/reseting.email.html.twig
{% block subject %} Test Resetting your password{% endblock %}

{% block body_html %}
    {% embed "AcmeDemoBundle:Email:email.html.twig" %}
        {% block body_text %}
            {% autoescape false %}
            Hello {{ user.username }} !

            You can reset your email by accessing {{ confirmationUrl }}

            Greetings,
            the Acme team
            {% endautoescape %}
        {% endblock %}
    {% endembed %}
{% endblock %}