Заменить шаблон электронного письма FOSUserBundle

https://symfony.com/doc/current/bundles/FOSUserBundle/emails.html

Эта ссылка, по-видимому, объясняет, как переопределить шаблон электронной почты из FOSUserBundle для сброса пароля для пользователя.

Я получил новый файл для электронного письма о сбросе (раньше был @FOSUser/Resetting/email.txt.twig) и теперь бросаю config.yml. Я могу сказать FOSUserBundle использовать другой файл.

fos_user:
    service:
        mailer: fos_user.mailer.twig_swift
    resetting:
        email:
            template:   'email/password_resetting.email.twig'

В ссылке написано, что если я добавлю «mailer: fos_user.mailer.twig_swift», можно будет обрабатывать html код.

В этот новый файл мне нужно добавить HTML-код, поэтому я попробовал, как написано в документации:

Добавление всего html-кода внутрь {% block body_html%} с или без "autoescape" -> тот же результат ... я вижу все html-теги ...

Что я делаю не так?

Бывший:

{# app/Resources/views/email/password_resetting.email.twig #}

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

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

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

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

{% block body_html %}
    {#
        //You can of course render the html directly here.
        //Including a template as done here allows keeping things DRY by using
        //the template inheritance in it
    #}
    <p><b>Test</b> test test</p>
    {{ '<p><b>Test</b> test test</p>'|raw }}

    {% include 'email/password_resetting.html.twig' %}
{% endblock %}

А содержимое файла email / pasword_resetting.html.twig:

<p><b>Test</b> test test</p>
{{ '<p><b>Test</b> test test</p>'|raw }}

И я получаю:

  Hello ricard !

    You can reset your password by accessing https://blablabla.bla/app_dev.php/es/resetting/reset/MiPqznsUxHQLLgviDYtCsJrQZBiaqVzDU5ENvHcadA

    Greetings,
    the App team

        <p><b>Test</b> test test</p>
    <p><b>Test</b> test test</p>
    <p><b>Test</b> test test</p>
<p><b>Test</b> test test</p>

Я хотел бы видеть выделенное жирным шрифтом и построенное по абзацам предложение, а не теги.

Я также пробовал:

{# app/Resources/views/email/password_resetting.email.twig #}

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

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

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

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

{% block body_html %}
    {#
        //You can of course render the html directly here.
        //Including a template as done here allows keeping things DRY by using
        //the template inheritance in it
    #}
    {% autoescape 'html' %}
        <p><b>Test</b> test test</p>
        {{ '<p><b>Test</b> test test</p>'|raw }}
    {% endautoescape %}
    {% autoescape %}
        <p><b>Test</b> test test</p>
        {{ '<p><b>Test</b> test test</p>'|raw }}
    {% endautoescape %}
    <p><b>Test</b> test test</p>
    {{ '<p><b>Test</b> test test</p>'|raw }}

{% endblock %}

И я получаю:

Hello ricard !

    You can reset your password by accessing https://blablabla.bla/app_dev.php/es/resetting/reset/2G2ZGW262Z1THu1_80k2vAQMdI4-faNFVFWgdOVts8

    Greetings,
    the App team

            <p><b>Test</b> test test</p>
    <p><b>Test</b> test test</p>
            <p><b>Test</b> test test</p>
    <p><b>Test</b> test test</p>
    <p><b>Test</b> test test</p>
<p><b>Test</b> test test</p>

где вы получаете вывод html? Я имею в виду, что вам нужен вывод html, и вы его получаете ... мне кажется правильным;)

Brucie Alpha 12.06.2018 19:11

В результате получено электронное письмо, и получатель этого письма увидит теги html, выделенные жирным шрифтом и абзацем. Я не хочу видеть html-теги, я хочу их использовать.

Ricard Espinàs Llovet 13.06.2018 09:12

а где вы просматриваете свою электронную почту? ... Твой файл у меня работает ...

Brucie Alpha 13.06.2018 10:58

попробуй очистить кеш ..

13dev 27.06.2018 15:27

Дело не в кешировании ... дело не в том, где я вижу это письмо ...

Ricard Espinàs Llovet 27.06.2018 15:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
5
780
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Окс, наконец-то я нашел ответ.

Я переписывал ResettingController, и в services.yml была объявлена ​​инъекция зависимости к этому новому контроллеру, который я хотел использовать вместо контроллера по умолчанию из FOSUserBundle.

Итак, я получил:

AppBundle\Controller\ResettingController:
    class: AppBundle\Controller\ResettingController
    arguments: ['','@fos_user.resetting.form.factory', '','','@fos_user.mailer.default', '']

Заменен на:

AppBundle\Controller\ResettingController:
    class: AppBundle\Controller\ResettingController
    arguments: ['','@fos_user.resetting.form.factory', '','','@fos_user.mailer.twig_swift', '']

Другие вопросы по теме