templates/default/devis.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block title %}Demande de devis — Otropik{% endblock %}
  3. {% block body %}
  4. {# ===== HERO ===== #}
  5. <section class="position-relative text-white">
  6.   <div class="ratio ratio-21x9">
  7.     {% if banner.img %}
  8.   <img src="{{ asset('img/banner/')}}{{banner.img}}" alt="Plage paradisiaque" class="w-100 h-100 object-fit-cover">
  9.   {% else %}
  10.     <img src="{{ asset('img/summer-holidays.jpg')}}" alt="Inspiration voyage" class="w-100 h-100 object-fit-cover">
  11.   {% endif %}
  12.   </div>
  13.   <div class="position-absolute top-0 start-0 w-100 h-100 d-flex align-items-center justify-content-center text-center bg-dark bg-opacity-50">
  14.     <div class="p-3">
  15.       <h1 class="display-5 fw-bold mb-2">Demandez votre devis sur-mesure</h1>
  16.       <p class="lead mb-0">Dites-nous vos envies, on s’occupe de tout ✈️🌴</p>
  17.     </div>
  18.   </div>
  19. </section>
  20. {# ===== FORMULAIRE ===== #}
  21. <section class="container py-5">
  22.   {# Message succès/erreur éventuel #}
  23.   {% for label, messages in app.flashes %}
  24.     {% for m in messages %}
  25.       <div class="alert alert-{{ label }} rounded-3">{{ m }}</div>
  26.     {% endfor %}
  27.   {% endfor %}
  28.   <form method="post" action="{#{ path('quote.request.send') }#}" class="row g-4" enctype="multipart/form-data">
  29.     <div class="col-12 col-lg-8">
  30.       <div class="card border-0 shadow-sm rounded-4">
  31.         <div class="card-body p-4">
  32.           {# ---- Bloc 1 : Votre voyage ---- #}
  33.           <h2 class="h5 fw-bold mb-3">Votre voyage</h2>
  34.           <div class="row g-3 mb-4">
  35.             <div class="col-md-6">
  36.               <label class="form-label">Type de voyage</label>
  37.               <select name="trip_type" class="form-select rounded-pill" required>
  38.                 <option value="" selected>— Sélectionnez —</option>
  39.                 {% for type in typeSejour %}
  40.                   <option value="{{type.id}}">{{type.name}}</option>
  41.                 {% endfor %}
  42.               </select>
  43.             </div>
  44.             <div class="col-md-6">
  45.               <label class="form-label">Destination souhaitée</label>
  46.               <input type="text" name="destination" class="form-control rounded-pill" placeholder="Ex : Guadeloupe, Sainte-Lucie, Ouest USA…" required>
  47.             </div>
  48.             <div class="col-md-6">
  49.               <label class="form-label">Date de départ</label>
  50.               <input type="date" name="start_date" class="form-control rounded-pill">
  51.             </div>
  52.             <div class="col-md-6">
  53.               <label class="form-label">Durée (jours)</label>
  54.               <input type="number" name="duration_days" class="form-control rounded-pill" min="1" placeholder="Ex : 10">
  55.             </div>
  56.           </div>
  57.           {# ---- Bloc 2 : Voyageurs ---- #}
  58.           <h2 class="h5 fw-bold mb-3">Voyageurs</h2>
  59.           <div class="row g-3 mb-4">
  60.             <div class="col-6 col-md-3">
  61.               <label class="form-label">Adultes</label>
  62.               <input type="number" name="trav_adults" class="form-control rounded-pill" min="1" value="2">
  63.             </div>
  64.             <div class="col-6 col-md-3">
  65.               <label class="form-label">Enfants</label>
  66.               <input type="number" name="trav_children" class="form-control rounded-pill" min="0" value="0">
  67.             </div>
  68.             <div class="col-12 col-md-6">
  69.               <label class="form-label">Âges des enfants (si applicable)</label>
  70.               <input type="text" name="children_ages" class="form-control rounded-pill" placeholder="Ex : 4, 8">
  71.             </div>
  72.           </div>
  73.           {# ---- Bloc 3 : Budget & préférences ---- #}
  74.           <h2 class="h5 fw-bold mb-3">Budget & préférences</h2>
  75.           <div class="row g-3 mb-4">
  76.             <div class="col-md-6">
  77.               <label class="form-label">Budget global (à partir de)</label>
  78.               <div class="input-group">
  79.                 <span class="input-group-text">€</span>
  80.                 <input type="number" name="budget_from" class="form-control rounded-end-pill" min="0" step="100" placeholder="Ex : 2500">
  81.               </div>
  82.               <div class="form-text">Indiquez une estimation pour nous guider.</div>
  83.             </div>
  84.             <div class="col-md-6">
  85.               <label class="form-label">Style d’hébergement</label>
  86.               <select name="board_type" class="form-select rounded-pill">
  87.                 <option value="">— Indifférent —</option>
  88.                 <option>Room Only</option>
  89.                 <option>Petit-déjeuner</option>
  90.                 <option>Demi-pension</option>
  91.                 <option>Pension complète</option>
  92.                 <option>All Inclusive</option>
  93.               </select>
  94.             </div>
  95.             <div class="col-12">
  96.               <label class="form-label">Activités/ambiance souhaitées</label>
  97.               <input type="text" name="interests" class="form-control rounded-pill" placeholder="Plages, randonnée, road trip, croisière, culture, gastronomie…">
  98.             </div>
  99.           </div>
  100.           {# ---- Bloc 4 : Message ---- #}
  101.           <h2 class="h5 fw-bold mb-3">Votre message</h2>
  102.           <div class="mb-4">
  103.             <textarea name="message" rows="6" class="form-control rounded-4" placeholder="Parlez-nous de votre projet, vos envies, vos impératifs de dates…"></textarea>
  104.           </div>
  105.           {# ---- Option : pièce jointe ---- #}
  106.           <div class="mb-4">
  107.             <label class="form-label">Pièce jointe (facultatif)</label>
  108.             <input type="file" name="attachment" class="form-control">
  109.             <div class="form-text">PDF/JPG/PNG — 10 Mo max (itinéraire, inspiration…)</div>
  110.           </div>
  111.         </div>
  112.       </div>
  113.     </div>
  114.     {# ---- Colonne latérale : Contact & consentement ---- #}
  115.     <div class="col-12 col-lg-4">
  116.       <div class="card border-0 shadow-sm rounded-4 sticky-lg-top" style="top:1.25rem;">
  117.         <div class="card-body p-4">
  118.           <h2 class="h5 fw-bold mb-3">Vos coordonnées</h2>
  119.           <div class="mb-3">
  120.             <label class="form-label">Nom & prénom</label>
  121.             <input type="text" name="full_name" class="form-control rounded-pill" required>
  122.           </div>
  123.           <div class="mb-3">
  124.             <label class="form-label">Email</label>
  125.             <input type="email" name="email" class="form-control rounded-pill" required>
  126.           </div>
  127.           <div class="mb-3">
  128.             <label class="form-label">Téléphone</label>
  129.             <input type="tel" name="phone" class="form-control rounded-pill" placeholder="+590 …">
  130.           </div>
  131.           <div class="form-check my-3">
  132.             <input class="form-check-input" type="checkbox" value="1" name="newsletter" id="nl">
  133.             <label class="form-check-label" for="nl">Je souhaite recevoir les inspirations Otropik</label>
  134.           </div>
  135.           <div class="form-check mb-4">
  136.             <input class="form-check-input" type="checkbox" value="1" name="rgpd" id="rgpd" required>
  137.             <label class="form-check-label" for="rgpd">
  138.               J’accepte que mes données soient utilisées pour me recontacter (RGPD).
  139.             </label>
  140.           </div>
  141.           <input type="hidden" name="_token" value="{{ csrf_token('quote_request') }}">
  142.           <button type="submit" class="btn btn-primary w-100 rounded-pill py-2">
  143.             <i class="bi bi-send me-1"></i> Envoyer ma demande
  144.           </button>
  145.           <p class="small text-muted mt-3 mb-0">
  146.             Réponse rapide sous 24–48h ouvrées par un spécialiste Otropik.
  147.           </p>
  148.         </div>
  149.       </div>
  150.     </div>
  151.   </form>
  152. </section>
  153. {% endblock %}