templates/magazines/search.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Recherche Magazines{% endblock %}
  3. {% block body %}
  4. <div class="container mt-4">
  5. <h1>Recherche de magazines</h1>
  6. <form method="get" action="{{ path('magazines_search') }}" class="mb-4">
  7. <div class="row justify-content-center">
  8. <div class="col-md-8">
  9. <div class="input-group input-group-lg">
  10. <input type="text" name="q" class="form-control"
  11. placeholder="Rechercher un magazine par nom..."
  12. value="{{ search }}"
  13. autofocus>
  14. <input type="hidden" name="type" value="magazine">
  15. <div class="input-group-append">
  16. <button type="submit" class="btn btn-primary">
  17. <i class="fas fa-search"></i> Rechercher
  18. </button>
  19. </div>
  20. </div>
  21. </div>
  22. </div>
  23. </form>
  24. {% if search %}
  25. <p class="text-muted text-center">
  26. Résultats pour "<strong>{{ search }}</strong>" :
  27. <strong>{{ results|length }}</strong> magazine(s) trouvé(s)
  28. </p>
  29. {% endif %}
  30. {% if results|length > 0 %}
  31. <div class="row">
  32. {% for magazine in results %}
  33. <div class="col-md-6 col-lg-4 mb-4">
  34. <div class="card h-100 shadow-sm">
  35. {% if images[magazine.id] is defined %}
  36. <img src="data:image/jpeg;base64,{{ images[magazine.id] }}"
  37. class="card-img-top"
  38. alt="{{ magazine.nom }}"
  39. style="height: 250px; object-fit: cover;">
  40. {% else %}
  41. <div class="card-img-top bg-gradient-secondary d-flex align-items-center justify-content-center"
  42. style="height: 250px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);">
  43. <i class="fas fa-book-open fa-4x text-white"></i>
  44. </div>
  45. {% endif %}
  46. <div class="card-body">
  47. <h5 class="card-title font-weight-bold">{{ magazine.nom }}</h5>
  48. {% if magazine.editeur %}
  49. <p class="card-text text-muted mb-2">
  50. <i class="fas fa-building"></i> {{ magazine.editeur }}
  51. </p>
  52. {% endif %}
  53. <div class="d-flex justify-content-between align-items-center">
  54. <span class="badge badge-primary badge-pill">
  55. <i class="fas fa-list"></i> {{ magazine.nbnum }} numéro(s)
  56. </span>
  57. {% if magazine.statut %}
  58. <span class="badge badge-success">En cours</span>
  59. {% else %}
  60. <span class="badge badge-secondary">Terminé</span>
  61. {% endif %}
  62. </div>
  63. </div>
  64. <div class="card-footer bg-white border-top-0">
  65. <a href="{{ path('magazine_detail', {id: magazine.id}) }}" class="btn btn-primary btn-block">
  66. <i class="fas fa-eye"></i> Voir les numéros
  67. </a>
  68. </div>
  69. </div>
  70. </div>
  71. {% endfor %}
  72. </div>
  73. <div class="d-flex justify-content-center mt-4">
  74. {{ knp_pagination_render(pagination, '@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig') }}
  75. </div>
  76. {% elseif search %}
  77. <div class="alert alert-info">
  78. Aucun résultat trouvé pour votre recherche.
  79. </div>
  80. {% else %}
  81. <div class="alert alert-secondary">
  82. Entrez un terme de recherche pour trouver des magazines ou des numéros.
  83. </div>
  84. {% endif %}
  85. <div class="mt-4">
  86. <a href="{{ path('magazines_list') }}" class="btn btn-outline-secondary">
  87. <i class="fas fa-arrow-left"></i> Retour à la liste des magazines
  88. </a>
  89. </div>
  90. </div>
  91. {% endblock %}