Mise à jour champs du formulaire
Salut à tous,
Voila, j'ai un form (avec un seul champ 'Content') le form pointe sur la page elle même. Globalement il fonctionne bien mais quand je tape quelque chose et que j'envoie il m'enregistre bien les données pas de problème mais au rechargement de la page il m'affiche ce que je viens d'envoyer dans le champ Content ! 8O
Voici mon controller :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| /**
* @Route("/messages/{id}", name="messages_show", methods={"GET","POST"})
*
* @IsGranted("ROLE_USER")
*/
public function show(Request $request, User $user): Response
{
$message = new Message();
$message->setAuthor($this->getUser());
$message->setrecipient($user);
$form = $this->createForm(MessageType::class, $message);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($message);
$entityManager->flush();
}
// on marque tous les messages comme lus car l'utilisateur est sur la conversation
$listeMessages = $this->repository->getMessagesFor($this->getUser()->getId(), $user->getId());
$entityManager = $this->getDoctrine()->getManager();
foreach ($listeMessages as $msg) {
// si le destinataire est le même que l'utilisateur connecté alors on ajoute
// une date de lecture aux messages qui ne sont pas lu.
if ($msg->getrecipient()->getId() == $this->getUser()->getId() && $msg->getReadAt() == null) {
$msg->setReadAt(new \DateTime());
}
}
$entityManager->flush();
return $this->render('message/show.html.twig', [
'user' => $user,
'form' => $form->createView(),
'messages' => $this->repository->getMessagesFor($this->getUser()->getId(), $user->getId())
]);
} |
et la vue :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| {% extends 'base.html.twig' %}
{% block title %}Messages {{ user.firstName }}{% endblock %}
{% block body %}
<div class="container">
<div class="card">
<div class="card-header">{{ user.firstName }}</div>
<div class="card-body">
{% for data in messages %}
<div class="raw">
<div class="col-md-10 {{ data.author.id == app.user.id ? 'offset-md-2 text-right' : '' }}">
<p>
<strong>{{ data.author.id == app.user.id ? 'Moi' : data.author }}</strong><br>
{{ data.content|nl2br }}<br>
{% if data.author.id == app.user.id %}
{% if data.readAt != null %}
<small>lu le {{ data.readAt|date('Y-m-d H:i:s') }}</small>
{% else %}
<small>non lu</small>
{% endif %}
{% endif %}
</p>
</div>
</div>
<hr>
{% endfor %}
<h2>Nouveau message :</h2>
{{ form_start(form) }}
{{ form_row(form.content) }}
<button class="btn btn-primary">Envoyer</button>
{{ form_end(form) }}
</div>
</div>
</div>
{% endblock %} |
Quelqu'un a t'il une idée ? J'ai loupé quelque chose ? je vous remercie.