{% extends 'base.html.twig' %} {% block title %}Inscription - Num-Ecard{% endblock %} {% block body %}

Créer votre compte

Rejoignez Num-Ecard et passez au digital

{% for flash_error in app.flashes('verify_email_error') %}
{{ flash_error }}
{% endfor %} {{ form_start(registrationForm, {'attr': {'class': 'register-form', 'novalidate': 'novalidate'}}) }} {# Erreurs globales du formulaire #} {% if registrationForm.vars.errors|length > 0 %}
{% for error in registrationForm.vars.errors %} {{ error.message }}
{% endfor %}
{% endif %} {# ══════════════════════════════════════════════════════ 1. PRÉNOM + NOM côte à côte ══════════════════════════════════════════════════════ #}
{{ form_label(registrationForm.prenom) }} {{ form_widget(registrationForm.prenom) }} {% if registrationForm.prenom.vars.errors|length > 0 %}
{{ form_errors(registrationForm.prenom) }}
{% endif %}
{{ form_label(registrationForm.nom) }} {{ form_widget(registrationForm.nom) }} {% if registrationForm.nom.vars.errors|length > 0 %}
{{ form_errors(registrationForm.nom) }}
{% endif %}
{# ══════════════════════════════════════════════════════ 2. TYPE DE COMPTE — Particulier / Professionnel ══════════════════════════════════════════════════════ #}
Type de compte

Vous êtes… *

{% for child in registrationForm.typeCompte %} {% set val = child.vars.value %} {% endfor %}
{% if registrationForm.typeCompte.vars.errors|length > 0 %}
{{ form_errors(registrationForm.typeCompte) }}
{% endif %} {# Message droit de rétractation — particulier (visible par défaut) #}
✅ En tant que particulier, vous bénéficiez d'un droit de rétractation de 14 jours à compter de votre commande (Art. L221-18 Code conso).
{# Message B2B — professionnel (caché par défaut) #}
{# ── Bloc professionnel : raison sociale + SIRET ─────── #} {# ══════════════════════════════════════════════════════ 3. EMAIL ══════════════════════════════════════════════════════ #}
Identifiants
{{ form_label(registrationForm.email, 'Adresse email') }} {{ form_widget(registrationForm.email, {'attr': {'placeholder': 'vous@exemple.com'}}) }} {% if registrationForm.email.vars.errors|length > 0 %}
{{ form_errors(registrationForm.email) }}
{% endif %}
{# ══════════════════════════════════════════════════════ 4. MOT DE PASSE (avec toggle + indicateur de force) ══════════════════════════════════════════════════════ #}
{{ form_label(registrationForm.plainPassword.first, 'Mot de passe') }}
{{ form_widget(registrationForm.plainPassword.first, { 'attr': {'placeholder': '••••••••', 'id': 'register-password'} }) }}
{# ── Indicateur de force MDP — Politique MDP V1.0 §2 ── #} {% if registrationForm.plainPassword.first.vars.errors|length > 0 %}
{{ form_errors(registrationForm.plainPassword.first) }}
{% endif %}
{# ══════════════════════════════════════════════════════ 5. CONFIRMER LE MOT DE PASSE ══════════════════════════════════════════════════════ #}
{{ form_label(registrationForm.plainPassword.second, 'Confirmer le mot de passe') }} {{ form_widget(registrationForm.plainPassword.second, { 'attr': {'placeholder': 'Répétez le mot de passe'} }) }} {% if registrationForm.plainPassword.vars.errors|length > 0 %}
{{ form_errors(registrationForm.plainPassword) }}
{% endif %}
{# ══════════════════════════════════════════════════════ 6. CGV — obligatoire ══════════════════════════════════════════════════════ #} {% if registrationForm.agreeTerms is defined %}
{{ form_widget(registrationForm.agreeTerms) }}
{% if registrationForm.agreeTerms.vars.errors|length > 0 %}
{{ form_errors(registrationForm.agreeTerms) }}
{% endif %} {% endif %} {# ══════════════════════════════════════════════════════ 7. OPT-IN MARKETING — facultatif, RGPD Art. 7 ══════════════════════════════════════════════════════ #} {% if registrationForm.optinMarketing is defined %}
{{ form_widget(registrationForm.optinMarketing) }}
{% endif %} {# ══════════════════════════════════════════════════════ 8. BOUTON SUBMIT ══════════════════════════════════════════════════════ #} {{ form_end(registrationForm, {'render_rest': false}) }}
ou
{% endblock %}