{% extends base_template %} {% import _self as macros %} {% block actions %} {% endblock %} {% block breadcrumb %}{% endblock %} {%- block tab_menu -%} {{ knp_menu_render(admin.sidemenu(action), { 'currentClass': 'active', 'template': get_global_template('tab_menu_template') }, 'twig') }} {%- endblock -%} {% block title %} {{ 'Import de données'|trans }} {% endblock %} {% block sonata_admin_content_actions_wrappers %} {% endblock sonata_admin_content_actions_wrappers %} {% block navbar_title %} {{ block('title') }} {% endblock %} {% block content %}
{# ── Section 1 : Instructions (repliable) ── #}
{{ 'Recommandations et instructions'|trans }}
  • {{ "L'importation de données ne fonctionne qu'avec des fichiers .CSV, et ayant au moins les colonnes obligatoires (celle en rouge dans les fichiers d'instructions)"|trans }}
  • {{ "Pour que les accents et caractères spéciaux fonctionnent, il faut que le fichier soit enregistré avec l'encodage UTF-8. Votre tableur et/ou éditeur de texte doit vous le proposer lors de l'enregistrement/l'export du fichier !"|trans }}
  • {{ "L'ordre des colonnes n'a pas d'importance, mais les noms des colonnes utilisés dans la première ligne du fichier CSV ne sont pas modifiables."|trans }}
  • {{ "Pour chaque type de données à importer, vous pouvez télécharger des fichiers d'exemples et d'instructions .XLSX (Excel) et .NUMBERS (Mac), mais seul un fichier .CSV peut être importé !"|trans }}
  • {{ "Les gestionnaires (de comptoir, groupe et prestataire) correspondent aux adhérents ayant accès à l'interface d'administration !"|trans }}
  • {{ "Les contacts (de comptoir, groupe et prestataire) correspondent à des informations publiques permettant de contacter les comptoirs, groupes et prestataires, ils n'ont pas de compte crée avec leur email !"|trans }}
  • {{ "Pour les comptoirs, groupes et prestataires, vous pouvez ajouter un ou plusieurs gestionnaires (gestionnaire_email1, gestionnaire_email2), un ou plusieurs contacts par défaut visible en public (contact1, contact2) et jusqu'à 10 de chaque !"|trans }}
{{ 'Fichiers d\'exemples et d\'instructions'|trans }} :
{% for key, csvparam in csvparams %} {% endfor %}
{{ 'Type'|trans }} Instructions .xlsx Instructions .numbers Exemple .csv
{{ key|capitalize }}(s) {% if csvparam.helper is defined and csvparam.helper is not empty %}
{{ csvparam.helper }} {% endif %}
.xlsx .numbers .csv
{# ── Formulaire d'import (utilise form_row standard Symfony) ── #} {{ form_start(form, {'attr': {'class': 'sonata-ba-form'}}) }} {# ── Type d'import ── #}
{{ 'Choisir le type de données à importer'|trans }}
{{ form_row(form.type, {'label': false}) }}
{# ── Options ── #}
{{ 'Options'|trans }}
{{ form_row(form.sendemail) }} {{ form_row(form.test) }}
{# ── Fichier CSV ── #}
{{ 'Fichier .csv à importer'|trans }}
{{ form_row(form.media, {'label': false}) }}
{{ form_errors(form) }} {{ form_row(form.user) }} {# ── Bouton de soumission ── #}
{{ form_widget(form.save, {'attr': {'class': 'btn btn-success btn-lg'}}) }}
{{ form_end(form) }} {# ── Résultats d'import ── #} {% if errors is defined and errors|length > 0 %}
{{ 'Erreurs'|trans }}
{% if errors['error'] is defined %} {{ errors['error'] }} {% else %} {{ macros.show_error(errors) }} {% endif %}
{% endif %} {% if warnings is defined and warnings|length > 0 %}
{{ 'Avertissements'|trans }}
{{ macros.show_error(warnings) }}
{% endif %} {% if success is defined and success|length > 0 %}
{{ 'Succès'|trans }}
{{ macros.show_error(success) }}
{% endif %} {% if linkcsverror is defined and linkcsverror != null %}
{{ 'Télécharger CSV avec lignes en erreurs'|trans }}
{% endif %}
{% endblock %} {% macro show_error(errors) %} {% for line, errorA in errors %}
Ligne {{line}} {% for key, errorB in errorA %} {% for csvline, errorString in errorB %} {% if (key is not empty) %}[{{key}}]{% endif %}{{errorString}} {% endfor %} {% endfor %}
{% endfor %} {% endmacro %}