Aller au contenu

La page

phil/contact-form-bundle

ContactFormController affiche le formulaire et, une fois qu'un message est valide et envoyé, redirige vers la même page avec ?sent=1 — 303 See Other — afin que recharger la page n'envoie rien deux fois.

RéponseQuand
200La page, ou la page après le départ d'un message (sent est vrai)
303Le message est parti
422Un champ manque ou est incorrect, ou la protection a retenu la soumission
503Le transport de courriel a refusé le message : le formulaire reste rempli et invite à réessayer ; le refus est journalisé, jamais le message

Le formulaire

ContactFormType, vers un ContactMessage :

ChampVérification
nameobligatoire, 100 caractères au plus
emailobligatoire, une adresse selon la RFC 5322 sans avertissement, telle que Symfony Mime l'écrit dans Reply-To, 254 caractères au plus
subjectfacultatif, 150 caractères au plus
messageobligatoire, de 10 à 5000 caractères

Il porte la protection de phil/spam-protection-bundle, avec la portée contact_form, et son sujet et son message sont lus par les règles de contenu : une soumission retenue reçoit l'unique erreur de la protection, qui n'en dit jamais la raison.

Les gabarits

@PhilContactForm/contact.html.twig est une page autonome. Une application donne la sienne avec la clé template, en étendant sa mise en page et en incluant le formulaire :

{% extends 'base.html.twig' %}
{% block body %}
    <h1>{{ 'contact_form.title'|trans({}, 'phil_contact_form') }}</h1>
    {% include '@PhilContactForm/_form.html.twig' %}
{% endblock %}

_form.html.twig indique si le message est parti ou a échoué, et produit le rendu du formulaire. Les libellés sont dans le domaine de traduction phil_contact_form.