templates/registration/_form.html.twig line 1
{% set classNames = userType is defined and userType is same as 'trainer' ? 'needs-validation' : '' %}
{{ form_start(registrationForm, {'attr': {'class': 'mt-4', 'id': 'registration_form'}}) }}
{% if registrationForm.parentCode is defined %}
<div class="mb-3">
<label class="form-label">{{ form_label(registrationForm.parentCode) }}</label>
{% set invitationCode = app.request.query.get('code') ?? app.request.query.get('invitation') %}
{{ form_widget(registrationForm.parentCode, {
'attr': {
'class': 'form-control' ~ (form_errors(registrationForm.parentCode) ? ' is-invalid' : ''),
'readonly': invitationCode is not empty,
'value': invitationCode|default('')
}
}) }}
{% if form_errors(registrationForm.parentCode) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.parentCode) }}
</div>
{% endif %}
{% if invitationCode is not empty %}
<small class="text-muted">Code d'invitation appliqué automatiquement</small>
{% endif %}
</div>
{% endif %}
{% if userType is defined and userType is same as 'trainer' %}
<div class="mb-4">
<h5 class="mb-3">Personal Information</h5>
<div class="row g-3">
{% for item in registrationForm.personne %}
<div class="col-12">
<label class="form-label">{{ form_label(item) }}</label>
{% if item is same as registrationForm.personne.sexe or item is same as registrationForm.personne.pays %}
{{ form_widget(item, {'attr': {'class': 'form-select'}}) }}
{% elseif item is same as registrationForm.personne.imageFile %}
{{ form_widget(item, {'attr': {'class': 'form-control', 'accept': 'image/*'}}) }}
<div class="form-text">Upload a profile photo (optional)</div>
{% else %}
{{ form_widget(item, {'attr': {'class': 'form-control' ~ (form_errors(item) ? ' is-invalid' : '')}}) }}
{% endif %}
{% if form_errors(item) %}
<div class="invalid-feedback d-block">
{{ form_errors(item) }}
</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
{% if registrationForm.enseignant is defined %}
<div class="mb-4">
<h5 class="mb-3">Teacher Information</h5>
<div class="row g-3">
{% for item in registrationForm.enseignant %}
<div class="col-12">
<label class="form-label">{{ form_label(item) }}</label>
{% if item.vars.name ends with 'File' %}
{{ form_widget(item, {'attr': {'class': 'form-control', 'accept': 'image/*'}}) }}
<div class="form-text">Upload required document</div>
{% else %}
{{ form_widget(item, {'attr': {'class': 'form-control' ~ (form_errors(item) ? ' is-invalid' : '')}}) }}
{% endif %}
{% if form_errors(item) %}
<div class="invalid-feedback d-block">
{{ form_errors(item) }}
</div>
{% endif %}
</div>
{% endfor %}
</div>
</div>
{% endif %}
{% else %}
{% if registrationForm.fullName is defined %}
<div class="mb-3">
<label class="form-label">{{ form_label(registrationForm.fullName) }}</label>
{{ form_widget(registrationForm.fullName, {'attr': {'class': 'form-control' ~ (form_errors(registrationForm.fullName) ? ' is-invalid' : '')}}) }}
{% if form_errors(registrationForm.fullName) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.fullName) }}
</div>
{% endif %}
</div>
{% endif %}
{% if registrationForm.username is defined %}
<div class="mb-3">
<label class="form-label">{{ form_label(registrationForm.username) }}</label>
{{ form_widget(registrationForm.username, {
'attr': {
'class': 'form-control' ~ (form_errors(registrationForm.username) ? ' is-invalid' : ''),
'minlength': 5,
'maxlength': 8,
'pattern': '[a-zA-Z0-9_]+',
'title': 'Username must be 5-8 characters long and can only contain letters, numbers, and underscores'
}
}) }}
{% if form_errors(registrationForm.username) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.username) }}
</div>
{% endif %}
<small class="text-muted">Username must be 5-8 characters long</small>
</div>
{% endif %}
{% if registrationForm.phoneNumber is defined %}
<div class="mb-3">
<label class="form-label">{{ form_label(registrationForm.phoneNumber) }}</label>
{{ form_widget(registrationForm.phoneNumber, {'attr': {'class': 'form-control' ~ (form_errors(registrationForm.phoneNumber) ? ' is-invalid' : '')}}) }}
{% if form_errors(registrationForm.phoneNumber) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.phoneNumber) }}
</div>
{% endif %}
</div>
{% endif %}
{% endif %}
<div class="mb-3">
<label class="form-label">{{ 'EMAIL_KEY'|trans }}</label>
{{ form_widget(registrationForm.email, {'attr': {'class': 'form-control' ~ (form_errors(registrationForm.email) ? ' is-invalid' : '')}}) }}
{% if form_errors(registrationForm.email) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.email) }}
</div>
{% endif %}
</div>
<div class="mb-3">
<label class="form-label">{{ 'PASSWORD_KEY'|trans }}</label>
{{ form_widget(registrationForm.plainPassword, {'attr': {'class': 'form-control' ~ (form_errors(registrationForm.plainPassword) ? ' is-invalid' : '')}}) }}
{% if form_errors(registrationForm.plainPassword) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.plainPassword) }}
</div>
{% endif %}
</div>
{% if registrationForm.confirmPassword is defined %}
<div class="mb-3">
<label class="form-label">{{ form_label(registrationForm.confirmPassword) }}</label>
{{ form_widget(registrationForm.confirmPassword, {'attr': {'class': 'form-control' ~ (form_errors(registrationForm.confirmPassword) ? ' is-invalid' : '')}}) }}
{% if form_errors(registrationForm.confirmPassword) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.confirmPassword) }}
</div>
{% endif %}
</div>
{% endif %}
<div class="mb-3">
<div class="form-check">
{{ form_widget(registrationForm.agreeTerms, {'attr': {'class': 'form-check-input' ~ (form_errors(registrationForm.agreeTerms) ? ' is-invalid' : '')}}) }}
<label class="form-check-label">
{{ form_label(registrationForm.agreeTerms) }}
</label>
{% if form_errors(registrationForm.agreeTerms) %}
<div class="invalid-feedback d-block">
{{ form_errors(registrationForm.agreeTerms) }}
</div>
{% endif %}
</div>
</div>
<button type="submit" class="btn btn-primary w-100">{{ 'REGISTER_KEY'|trans }}</button>
{{ form_end(registrationForm) }}