templates/partials/_metiers_cards.html.twig line 1
{% for metier in metiers|default([]) %}<div class="group bg-white rounded-xl border border-slate-200 p-5 hover:shadow-lg transition-all hover:-translate-y-1 hover:border-indigo-200"><!-- En-tête avec nom et secteur --><div class="flex justify-between items-start mb-3"><h3 class="text-lg font-semibold text-slate-900 group-hover:text-indigo-600 transition">{{ metier.nom }}</h3></div><!-- Informations complémentaires (durée et niveau) - dédupliquées --><div class="flex flex-wrap gap-3 mb-2 border-b pb-2 text-xs">{% if metier.secteur %}<div class="flex items-center text-purple-600 bg-purple-50 px-2 py-1 rounded-md">{{ metier.secteur.nom }}</div>{% endif %}{# Dédupliquer les combinaisons (dureeFormation, niveauRequis) identiques #}{% set shownCombinations = [] %}{% for em in metier.etablissementMetiers|default([]) %}{% set comboKey = (em.dureeFormation|default('')) ~ '||' ~ (em.niveauRequis|default('')) %}{% if comboKey not in shownCombinations %}{% set shownCombinations = shownCombinations|merge([comboKey]) %}{% if em.dureeFormation %}<div class="flex items-center text-slate-600 bg-slate-50 px-2 py-1 rounded-md"><i class="fas fa-clock mr-1 text-indigo-400"></i><span>{{ em.dureeFormation }}</span></div>{% endif %}{% if em.niveauRequis %}<div class="flex items-center text-slate-600 bg-slate-50 px-2 py-1 rounded-md"><i class="fas fa-graduation-cap mr-1 text-indigo-400"></i><span>{{ em.niveauRequis }}</span></div>{% endif %}{% endif %}{% endfor %}</div><!-- Badges des établissements (cliquables) -->{% if metier.etablissementMetiers|length > 0 %}<div class="mb-2"><div class="flex flex-wrap gap-1">{% for em in metier.etablissementMetiers|slice(0, 7) %}{% if em.etablissement %}<a href="{{ path('app_candidature_new', {'etablissement': em.etablissement.id, 'metier': metier.id}) }}"class="px-3 py-1 bg-indigo-50 text-indigo-700 text-sm rounded-full hover:bg-indigo-100 hover:text-indigo-800 transition-colors inline-flex items-center group/badge"title="Postuler pour {{ em.etablissement.nom }}">{{ em.etablissement.nom|length > 25 ? em.etablissement.nom|slice(0, 25) ~ '…' : em.etablissement.nom }}</a>{% endif %}{% endfor %}{% if metier.etablissementMetiers|length > 7 %}{% set autresEtablissements = [] %}{% for em in metier.etablissementMetiers|slice(7) %}{% if em.etablissement %}{% set autresEtablissements = autresEtablissements|merge([{'id': em.etablissement.id,'nom': em.etablissement.nom,'places': em.nbrplace}]) %}{% endif %}{% endfor %}<button type="button"class="px-3 py-1 bg-slate-100 text-slate-600 text-sm rounded-full hover:bg-slate-200 transition-colors cursor-pointer etablissement-modal-btn"data-metier-id="{{ metier.id }}"data-metier-nom="{{ metier.nom }}"data-etablissements="{{ autresEtablissements|json_encode|e('html_attr') }}">voir la suite (+{{ metier.etablissementMetiers|length - 7 }})</button>{% endif %}</div></div>{% else %}<p class="text-xs text-slate-400 italic mb-2">Aucun établissement de formation</p>{% endif %}</div>{% else %}<div class="col-span-full text-center py-12 bg-white/10 backdrop-blur-sm rounded-xl"><div class="w-16 h-16 bg-white/20 rounded-full flex items-center justify-center mx-auto mb-4"><i class="fas fa-briefcase text-2xl text-white"></i></div><p class="text-lg text-white">Aucun métier trouvé</p><p class="text-sm text-white/70">Modifiez vos filtres</p></div>{% endfor %}