templates/default/devis.html.twig line 1

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