My flask messages don’t display on Symfony 6. I don’t know why. I’d like to display an error message when my user registers incorrectly (e-mail already taken, password and confirmation not identical, invalid username). In the logs, I can see that it works fine, I see that it doesn’t validate because password and confirmation are not identical when I test, but there’s no error message, which should be there thanks to “include”.
here my controller file :
namespace AppControllerSecurity;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentPasswordHasherHasherUserPasswordHasherInterface;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentValidatorValidatorValidatorInterface;
#[Route(name: 'app_security_')]
class RegisterController extends AbstractController{
#[Route('/register', name: 'register')]
public function register(Request $request, UserPasswordHasherInterface $passwordHasher, ValidatorInterface $validator, EntityManagerInterface $em) {
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
if($form->isSubmitted()) {
$errors = $validator->validate($user);
if($errors->count() <= 0) {
$datetime = new DateTime('now');
$user->setRoles([])->setBanned(false)->setCreatedAt($datetime);
$user->setPassword($passwordHasher->hashPassword($user, $user->getPassword()));
$this->addFlash('success', "Félicitations, votre compte vient d'être créé !");
return $this->redirectToRoute('app_security_login');
foreach($errors as $violation) {
$this->addFlash('error', $violation->getMessage());
return $this->render('security/register.html.twig', [
'form' => $form->createView()
<code><?php
namespace AppControllerSecurity;
use AppEntityUser;
use AppFormUserType;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentPasswordHasherHasherUserPasswordHasherInterface;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentValidatorValidatorValidatorInterface;
#[Route(name: 'app_security_')]
class RegisterController extends AbstractController{
#[Route('/register', name: 'register')]
public function register(Request $request, UserPasswordHasherInterface $passwordHasher, ValidatorInterface $validator, EntityManagerInterface $em) {
$user = new User();
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
if($form->isSubmitted()) {
$errors = $validator->validate($user);
if($errors->count() <= 0) {
$datetime = new DateTime('now');
$user->setRoles([])->setBanned(false)->setCreatedAt($datetime);
$user->setPassword($passwordHasher->hashPassword($user, $user->getPassword()));
$em->persist($user);
$em->flush();
$this->addFlash('success', "Félicitations, votre compte vient d'être créé !");
return $this->redirectToRoute('app_security_login');
} else {
foreach($errors as $violation) {
$this->addFlash('error', $violation->getMessage());
}
}
}
return $this->render('security/register.html.twig', [
'form' => $form->createView()
]);
}
}
</code>
<?php
namespace AppControllerSecurity;
use AppEntityUser;
use AppFormUserType;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentPasswordHasherHasherUserPasswordHasherInterface;
use SymfonyComponentRoutingAnnotationRoute;
use SymfonyComponentValidatorValidatorValidatorInterface;
#[Route(name: 'app_security_')]
class RegisterController extends AbstractController{
#[Route('/register', name: 'register')]
public function register(Request $request, UserPasswordHasherInterface $passwordHasher, ValidatorInterface $validator, EntityManagerInterface $em) {
$user = new User();
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
if($form->isSubmitted()) {
$errors = $validator->validate($user);
if($errors->count() <= 0) {
$datetime = new DateTime('now');
$user->setRoles([])->setBanned(false)->setCreatedAt($datetime);
$user->setPassword($passwordHasher->hashPassword($user, $user->getPassword()));
$em->persist($user);
$em->flush();
$this->addFlash('success', "Félicitations, votre compte vient d'être créé !");
return $this->redirectToRoute('app_security_login');
} else {
foreach($errors as $violation) {
$this->addFlash('error', $violation->getMessage());
}
}
}
return $this->render('security/register.html.twig', [
'form' => $form->createView()
]);
}
}
here my template file which include another file :
<code>{% extends 'base.html.twig' %}
<h3>Twitya - Inscription</h3>
<p>Inscrivez-vous sur notre site Twitya.</p>
<div class="col-lg-3 col-md-2"></div>
<div class="col-lg-6 col-md-8">
{% include 'includes/_alerts.html.twig' %}
<label for="inputEmail" class="form-label">Adresse Email</label>
{{ form_widget(form.email) }}
<div id="emailHelp" class="form-text">Veuillez conserver votre adresse et pas la partager.</div>
<label for="inputPseudo" class="form-label">Pseudonyme</label>
{{ form_widget(form.username) }}
<label for="inputPassword" class="form-label">Mot de passe</label>
{{ form_widget(form.password) }}
<label for="inputPasswordConfirm" class="form-label">Confirmation du mot de passe</label>
{{ form_widget(form.passwordConfirm) }}
<button type="submit" class="btn btn-primary">S'inscrire</button>
<div class="col-lg-3 col-md-2"></div>
<code>{% extends 'base.html.twig' %}
{% block container %}
<h3>Twitya - Inscription</h3>
<p>Inscrivez-vous sur notre site Twitya.</p>
<hr class="mb-3">
<div class="row">
<div class="col-lg-3 col-md-2"></div>
<div class="col-lg-6 col-md-8">
{% include 'includes/_alerts.html.twig' %}
{{ form_start(form)}}
<div class="mb-3">
<label for="inputEmail" class="form-label">Adresse Email</label>
{{ form_widget(form.email) }}
<div id="emailHelp" class="form-text">Veuillez conserver votre adresse et pas la partager.</div>
</div>
<div class="mb-3">
<label for="inputPseudo" class="form-label">Pseudonyme</label>
{{ form_widget(form.username) }}
</div>
<div class="mb-3">
<label for="inputPassword" class="form-label">Mot de passe</label>
{{ form_widget(form.password) }}
</div>
<div class="mb-3">
<label for="inputPasswordConfirm" class="form-label">Confirmation du mot de passe</label>
{{ form_widget(form.passwordConfirm) }}
</div>
<button type="submit" class="btn btn-primary">S'inscrire</button>
{{ form_end(form)}}
</div>
<div class="col-lg-3 col-md-2"></div>
</div>
{% endblock %}
</code>
{% extends 'base.html.twig' %}
{% block container %}
<h3>Twitya - Inscription</h3>
<p>Inscrivez-vous sur notre site Twitya.</p>
<hr class="mb-3">
<div class="row">
<div class="col-lg-3 col-md-2"></div>
<div class="col-lg-6 col-md-8">
{% include 'includes/_alerts.html.twig' %}
{{ form_start(form)}}
<div class="mb-3">
<label for="inputEmail" class="form-label">Adresse Email</label>
{{ form_widget(form.email) }}
<div id="emailHelp" class="form-text">Veuillez conserver votre adresse et pas la partager.</div>
</div>
<div class="mb-3">
<label for="inputPseudo" class="form-label">Pseudonyme</label>
{{ form_widget(form.username) }}
</div>
<div class="mb-3">
<label for="inputPassword" class="form-label">Mot de passe</label>
{{ form_widget(form.password) }}
</div>
<div class="mb-3">
<label for="inputPasswordConfirm" class="form-label">Confirmation du mot de passe</label>
{{ form_widget(form.passwordConfirm) }}
</div>
<button type="submit" class="btn btn-primary">S'inscrire</button>
{{ form_end(form)}}
</div>
<div class="col-lg-3 col-md-2"></div>
</div>
{% endblock %}
and here my template flask messages which I include in my file template above :
<code>{% for message in app.flashes('success') %}
<div class="alert alert-success" role="alert">
{% for message in app.flashes('error') %}
<div class="alert alert-error" role="alert">
<code>{% for message in app.flashes('success') %}
<div class="alert alert-success" role="alert">
{{ message }}
</div>
{% endfor %}
{% for message in app.flashes('error') %}
<div class="alert alert-error" role="alert">
{{ message }}
</div>
{% endfor %}
</code>
{% for message in app.flashes('success') %}
<div class="alert alert-success" role="alert">
{{ message }}
</div>
{% endfor %}
{% for message in app.flashes('error') %}
<div class="alert alert-error" role="alert">
{{ message }}
</div>
{% endfor %}
I didn’t find any solutions