so when i registre via fosUserBundle form on production env it sends an email to my gmail but there is no confirmation link in the email, there is just this
registration.email.message
in the title and in the body of the email, someone knows why ?
It's because the email is content obtained using translator and you have wrong configuration.
Make sure you have the translator enabled:
# app/config/config.yml
framework:
translator: { fallback: %locale% }
# app/config/parameters.yml
parameters:
locale: en # default locale
Also if you write your app in different language than english, make sure the key registration.email.message is translated into it. If it's not, you can override the translations by writing following file:
# app/Resources/FOSUserBundle/translations/FOSUserBundle.{your_locale}.yml
registration:
email:
subject: Registration email subject
message: |
Here you can place the content of the email.
It can be multiline and you even have access to
variables %username% and %confirmationUrl%.
This is the FOSUser default mail:
{% block subject %}
{% autoescape false %}
{{ 'registration.email.subject'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}, 'FOSUserBundle') }}
{% endautoescape %}
{% endblock %}
{% block body_text %}
{% autoescape false %}
{{ 'registration.email.message'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}, 'FOSUserBundle') }}
{% endautoescape %}
{% endblock %}
{% block body_html %}{% endblock %}
At line 8, 'registration.email.message' is the email content. And trans is a replace filter. Try something like this:
{% block subject %}
{% autoescape false %}
{{ 'Confirmez votre inscription sur blabla.com'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}, 'FOSUserBundle') }}
{% endautoescape %}
{% endblock %}
{% block body_text %}
{% autoescape false %}
{{ 'Bonjour %username%
Merci de cliquer sur le lien suivant afin de confirmer votre inscription sur blabla.com:
%confirmationUrl%'|trans({'%username%': user.username, '%confirmationUrl%': confirmationUrl}, 'FOSUserBundle') }}
{% endautoescape %}
{% endblock %}
{% block body_html %}{% endblock %}
Related
Shopware6: I want to redirect the page to the "Home page" after registering the customer.
any one can help me?
You could extend the template register.html.twig and set the redirectTo variable.
{% sw_extends '#Storefront/storefront/component/account/register.html.twig' %}
{% block component_account_register_form %}
{% if redirectTo == "frontend.account.home.page" %}
{% set redirectTo = "frontend.home.page" %}
{% endif %}
{{ parent() }}
{% endblock %}
I've implemented IvoryCKEditorBundle in my SYMFONY 3.2 project.
I followed the guidelines from here and had an overview of the doc on the official Symfony site.
Now I see the following files exits in the IvoryCKEditorBundle directory:
[my
project]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\ckeditor_widget.html.twig
[my
project]\vendor\egoloen\ckeditor-bundle\Twig\CKEditorExtension.php
And [my
project]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\ckeditor_widget.html.twig defines {% block ckeditor_widget %}.
In my projet I have redefined my own template to render a form, using all the tricks given in the official doc. And under [my project]\src\MyBundle\Resources\views I have a file input_inline_template.html.twig which looks like that:
{% extends 'form_div_layout.html.twig' %}
{% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
{% block form_row %}
<div class='col-12' id={{ id ~ '_div_row_id'}}>
{% block form_label %}
<div class='col-4' id={{ id ~ '_div_label_id' }}>
{{ parent() }}
</div>
{% endblock %}
{% if form.vars.block_prefixes.2 == "textarea" %}
{% if (form.vars.block_prefixes.3 is defined) and (form.vars.block_prefixes.3 == "ckeditor") %}
{% block ckeditor_widget %}
<div class='col-8'>
{{ parent() }}
</div>
{% endblock %}
{% else %}
{% block textarea_widget %}
<div class='col-8'>
{{ parent() }}
</div>
{% endblock %}
{% endif %}
{% endif %}
</div>
{% endblock %}
This does not work. It tells me that it cannot find the ckeditor_widget if I don't have the line {% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %} it throws the error:
Block "ckeditor_widget" on template "form_div_layout.html.twig" does not exist in "form_div_layout.html.twig".
And when the line {% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %} is implemented, it throws an error that is:
Unable to find template "CKEditorBundle:Form:ckeditor_widget.html.twig"
It tells me it looks for CKEditorBundle:Form:ckeditor_widget.html.twig in:
[my_symf_project]\app/Resources/views, [my_symf_project]\vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/views/Form, [my_symf_project]\vendor\knplabs\knp-menu\src\Knp\Menu/Resources/views.
I don't know how to configure in [my project]\app\config\config.yml that it should look in [my project]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\ to find ckeditor_widget.html.twig.
I found a hint here.
In [my project]\src\MyBundle\Resources\views\input_inline_template.html.twig, I've replaced: {% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %} with: {% use 'IvoryCKEditorBundle:Form:ckeditor_widget.html.twig' %}.
It fixed it.
I'm using Tarbell to publish a formatted version of an inventory spreadsheet. Every row has a category, so I can do something like this:
<h2>Power Tools</h2>
{% for row in inventory %}
{% if row.Category == "powertools" %}
<b>{{ row.Display_Name|e }}</b> <br />
{% endif %}
{% endfor %}
<h2>A/V Gear</h2>
{% for row in inventory %}
{% if row.Category == "av" %}
<b>{{ row.Display_Name|e }}</b><br />
{% endif %}
{% endfor %}
To get a list of all the power tools followed by a list of A/V gear. I'd like to move that into a macro that I can call with a couple of arguments. I've got this:
{% macro list(cat, title='') -%}
<p>Category: {{ cat }}; Header: {{ title }}</p>
{% for row in inventory %}
{% if row.Category == "{{ cat }}" %}
<b>{{ row.Display_Name|e }}</b><br />
{% endif %}
{% endfor %}
{%- endmacro %}
When I call it with:
{{ list('av', title='Cameras and Audio Recorders')}}
{{ list('powertools', title='Power Tools')}}
I see "Category: powertools; Header: Power Tools" and "Category: av; Header: Cameras and Audio Recorders" as expected, so I know the macro can hear me, but the list itself doesn't show up. Can I use a macro argument in a comparison test? How?
There is no need for variable interpolation syntax inside of a block - you can just refer to the variable by name as you would in Python:
{# Do this #}
{% if row.Category == cat %}
{# Instead of this #}
{% if row.Category == "{{ cat }}" %}
Is there any Symfony2 option to show some separated text fields from one single text field in a form?
Try to use form customization feature. Please check this article for more information -http://symfony.com/doc/current/cookbook/form/form_customization.html
Example:
form_theme.twig.html
{% block file_widget %}
{% spaceless %}
<td>{% set type = type|default('file') %}
<input type="{{ type }}" {{ block('widget_attributes') }} />
</td>
{% endspaceless %}
{% endblock file_widget %}
template.twig.html
{% form_theme form 'MyBundle:Form:form_theme.html.twig' %}
{{ form_row(form.contract) }}
I'm having a problem rendering a custom individual field.
Adding the external template globally (config.yml) works but adding the same block in the same template doesn't.
form_elements.html.twig
{% block _user_email_widget %}
<h1>test</h1>
{% endblock %}
template.html.twig (won't work)
{% form_theme form 'ProjectUserBundle:Form:form_elements.html.twig' %}
{% block content %}
{{form_widget(form.user)}}
{% endblock %}
config.yml (works)
twig:
form:
resources:
- 'ProjectUserBundle:Form:form_elements.html.twig'
Fixed
The problem was on the template:
{% block content %}
{% form_theme form 'ProjectUserBundle:Form:form_elements.html.twig' %}
{{form_widget(form.user)}}
{% endblock %}
This is the right way to do that