{# Card de résultat à partir d'un SearchHit (DTO Meilisearch). Cible href : - Si le hit est matérialisé (workPublicId présent) : direct vers la fiche. - Sinon (catalogue OL, pas encore en BDD) : passe par app_work_open qui matérialisera à la volée (Phase 4 — pour l'instant la route n'existe pas encore, c'est OK car aucun hit non-matérialisé n'est servi en Phase 3). #} {% set cover = hit.resolveCoverUrl() %} {% if hit.isMaterialized() %} {% set href = path('app_work_show', { publicId: hit.workPublicId }) %} {% else %} {# Route Phase 4 — fallback temporaire vers /search pour ne pas crash. #} {% set href = path('app_work_open', { olWorkId: hit.olWorkId }) ?? '#' %} {% endif %}
  • {% if cover %} Couverture de {{ hit.title }} {% else %} {% endif %}

    {{ hit.title }}

    {% if hit.authors|length > 0 %}{{ hit.authors|join(', ') }}{% else %}Auteur inconnu{% endif %} {% if hit.firstPublishYear %} · {{ hit.firstPublishYear }}{% endif %}