var/cache/dev/twig/b1/b1c0c7cbc5dbc97b6eeca8166159b4ec.php line 51

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. /* default/devis.html.twig */
  15. class __TwigTemplate_098cf45f4c159d5d51205ce66ebbf454 extends Template
  16. {
  17.     private $source;
  18.     private $macros = [];
  19.     public function __construct(Environment $env)
  20.     {
  21.         parent::__construct($env);
  22.         $this->source $this->getSourceContext();
  23.         $this->blocks = [
  24.             'title' => [$this'block_title'],
  25.             'seo' => [$this'block_seo'],
  26.             'body' => [$this'block_body'],
  27.         ];
  28.     }
  29.     protected function doGetParent(array $context)
  30.     {
  31.         // line 1
  32.         return "base.html.twig";
  33.     }
  34.     protected function doDisplay(array $context, array $blocks = [])
  35.     {
  36.         $macros $this->macros;
  37.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  38.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""default/devis.html.twig"));
  39.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  40.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""default/devis.html.twig"));
  41.         $this->parent $this->loadTemplate("base.html.twig""default/devis.html.twig"1);
  42.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  43.         
  44.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  45.         
  46.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  47.     }
  48.     // line 3
  49.     public function block_title($context, array $blocks = [])
  50.     {
  51.         $macros $this->macros;
  52.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  53.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  54.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  55.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""title"));
  56.         yield "Demande de devis voyage – OTropik Agence de voyage en Guadeloupe";
  57.         
  58.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  59.         
  60.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  61.         return; yield '';
  62.     }
  63.     // line 4
  64.     public function block_seo($context, array $blocks = [])
  65.     {
  66.         $macros $this->macros;
  67.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  68.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""seo"));
  69.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  70.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""seo"));
  71.         // line 5
  72.         yield " <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.\" >
  73. \t<meta property=\"og:title\" content=\"Demande de devis voyage – OTropik Guadeloupe\" />
  74. \t<meta property=\"og:type\" content=\"Website\" />
  75. \t<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.\" />
  76. \t<meta property=\"og:url\" content=\"";
  77.         // line 10
  78.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\HttpFoundationExtension']->generateAbsoluteUrl(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'10$this->source); })()), "request", [], "any"falsefalsefalse10), "uri", [], "any"falsefalsefalse10)), "html"nulltrue);
  79.         yield "\" />
  80. \t<meta property=\"og:image\" content=\"";
  81.         // line 11
  82.         yield "\" />
  83. \t<meta name =\"twitter:card\" content=\"summary_large_image\" />
  84. \t<meta name=\"twitter:title\" content=\"Demande de devis voyage – OTropik Guadeloupe\">
  85. \t<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.\">
  86. \t<meta name=\"twitter:image\" content=\"";
  87.         // line 16
  88.         yield "\">
  89. ";
  90.         
  91.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  92.         
  93.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  94.         return; yield '';
  95.     }
  96.     // line 18
  97.     public function block_body($context, array $blocks = [])
  98.     {
  99.         $macros $this->macros;
  100.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  101.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  102.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  103.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""body"));
  104.         // line 19
  105.         yield "
  106. ";
  107.         // line 21
  108.         yield "<section class=\"position-relative text-white\">
  109.   <div class=\"ratio ratio-21x9\">
  110.     ";
  111.         // line 23
  112.         if (CoreExtension::getAttribute($this->env$this->source, (isset($context["banner"]) || array_key_exists("banner"$context) ? $context["banner"] : (function () { throw new RuntimeError('Variable "banner" does not exist.'23$this->source); })()), "img", [], "any"falsefalsefalse23)) {
  113.             // line 24
  114.             yield "  <img src=\"";
  115.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/banner/"), "html"nulltrue);
  116.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source, (isset($context["banner"]) || array_key_exists("banner"$context) ? $context["banner"] : (function () { throw new RuntimeError('Variable "banner" does not exist.'24$this->source); })()), "img", [], "any"falsefalsefalse24), "html"nulltrue);
  117.             yield "\" alt=\"Plage paradisiaque\" class=\"w-100 h-100 object-fit-cover\">
  118.   ";
  119.         } else {
  120.             // line 26
  121.             yield "    <img src=\"";
  122.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\AssetExtension']->getAssetUrl("img/summer-holidays.jpg"), "html"nulltrue);
  123.             yield "\" alt=\"Inspiration voyage\" class=\"w-100 h-100 object-fit-cover\">
  124.   ";
  125.         }
  126.         // line 28
  127.         yield "  </div>
  128.   <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\">
  129.     <div class=\"p-3\">
  130.       <h1 class=\"display-5 fw-bold mb-2\">Demandez votre devis sur-mesure</h1>
  131.       <p class=\"lead mb-0\">Dites-nous vos envies, on s’occupe de tout ✈️🌴</p>
  132.     </div>
  133.   </div>
  134. </section>
  135. ";
  136.         // line 38
  137.         yield "<section class=\"container py-5\">
  138.   ";
  139.         // line 40
  140.         yield "  ";
  141.         $context['_parent'] = $context;
  142.         $context['_seq'] = CoreExtension::ensureTraversable(CoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'40$this->source); })()), "flashes", [], "any"falsefalsefalse40));
  143.         foreach ($context['_seq'] as $context["label"] => $context["messages"]) {
  144.             // line 41
  145.             yield "    ";
  146.             $context['_parent'] = $context;
  147.             $context['_seq'] = CoreExtension::ensureTraversable($context["messages"]);
  148.             foreach ($context['_seq'] as $context["_key"] => $context["m"]) {
  149.                 // line 42
  150.                 yield "      <div class=\"alert alert-";
  151.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["label"], "html"nulltrue);
  152.                 yield " rounded-3\">";
  153.                 yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($context["m"], "html"nulltrue);
  154.                 yield "</div>
  155.     ";
  156.             }
  157.             $_parent $context['_parent'];
  158.             unset($context['_seq'], $context['_iterated'], $context['_key'], $context['m'], $context['_parent'], $context['loop']);
  159.             $context array_intersect_key($context$_parent) + $_parent;
  160.             // line 44
  161.             yield "  ";
  162.         }
  163.         $_parent $context['_parent'];
  164.         unset($context['_seq'], $context['_iterated'], $context['label'], $context['messages'], $context['_parent'], $context['loop']);
  165.         $context array_intersect_key($context$_parent) + $_parent;
  166.         // line 45
  167.         yield "
  168.   <form method=\"post\" action=\"";
  169.         // line 46
  170.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("quote.request.send");
  171.         yield "\" class=\"row g-4\" enctype=\"multipart/form-data\">
  172.     <div class=\"col-12 col-lg-8\">
  173.       <div class=\"card border-0 shadow-sm rounded-4\">
  174.         <div class=\"card-body p-4\">
  175.           ";
  176.         // line 52
  177.         yield "          <h2 class=\"h5 fw-bold mb-3\">Votre voyage</h2>
  178.           <div class=\"row g-3 mb-4\">
  179.             <div class=\"col-md-6\">
  180.               <label class=\"form-label\">Type de voyage</label>
  181.               <select name=\"tripType\" class=\"form-select rounded-pill\" required>
  182.                 <option value=\"\" selected>— Sélectionnez —</option>
  183.                 ";
  184.         // line 58
  185.         $context['_parent'] = $context;
  186.         $context['_seq'] = CoreExtension::ensureTraversable((isset($context["typeSejour"]) || array_key_exists("typeSejour"$context) ? $context["typeSejour"] : (function () { throw new RuntimeError('Variable "typeSejour" does not exist.'58$this->source); })()));
  187.         foreach ($context['_seq'] as $context["_key"] => $context["type"]) {
  188.             // line 59
  189.             yield "                  <option value=\"";
  190.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["type"], "id", [], "any"falsefalsefalse59), "html"nulltrue);
  191.             yield "\">";
  192.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(CoreExtension::getAttribute($this->env$this->source$context["type"], "name", [], "any"falsefalsefalse59), "html"nulltrue);
  193.             yield "</option>
  194.                 ";
  195.         }
  196.         $_parent $context['_parent'];
  197.         unset($context['_seq'], $context['_iterated'], $context['_key'], $context['type'], $context['_parent'], $context['loop']);
  198.         $context array_intersect_key($context$_parent) + $_parent;
  199.         // line 61
  200.         yield "              </select>
  201.             </div> 
  202.             <div class=\"col-md-6\">
  203.               <label class=\"form-label\">Destination souhaitée</label>
  204.               <input type=\"text\" name=\"destination\" class=\"form-control rounded-pill\" placeholder=\"Ex : Guadeloupe, Sainte-Lucie, Ouest USA…\" required>
  205.             </div>
  206.             <div class=\"col-md-6\">
  207.               <label class=\"form-label\">Date de départ</label>
  208.               <input type=\"date\" name=\"startDate\" class=\"form-control rounded-pill\">
  209.             </div>
  210.             <div class=\"col-md-6\">
  211.               <label class=\"form-label\">Durée (jours)</label>
  212.               <input type=\"number\" name=\"durationDays\" class=\"form-control rounded-pill\" min=\"1\" placeholder=\"Ex : 10\">
  213.             </div>
  214.           </div>
  215.           ";
  216.         // line 78
  217.         yield "          <h2 class=\"h5 fw-bold mb-3\">Voyageurs</h2>
  218.           <div class=\"row g-3 mb-4\">
  219.             <div class=\"col-6 col-md-3\">
  220.               <label class=\"form-label\">Adultes</label>
  221.               <input type=\"number\" name=\"travAdults\" class=\"form-control rounded-pill\" min=\"1\" value=\"2\">
  222.             </div>
  223.             <div class=\"col-6 col-md-3\">
  224.               <label class=\"form-label\">Enfants</label>
  225.               <input type=\"number\" name=\"travChildren\" class=\"form-control rounded-pill\" min=\"0\" value=\"0\">
  226.             </div>
  227.             <div class=\"col-12 col-md-6\">
  228.               <label class=\"form-label\">Âges des enfants (si applicable)</label>
  229.               <input type=\"text\" name=\"childrenAges\" class=\"form-control rounded-pill\" placeholder=\"Ex : 4, 8\">
  230.             </div>
  231.           </div>
  232.           ";
  233.         // line 95
  234.         yield "          <h2 class=\"h5 fw-bold mb-3\">Budget & préférences</h2>
  235.           <div class=\"row g-3 mb-4\">
  236.             <div class=\"col-md-6\">
  237.               <label class=\"form-label\">Budget global (à partir de)</label>
  238.               <div class=\"input-group\">
  239.                 <span class=\"input-group-text\">€</span>
  240.                 <input type=\"number\" name=\"budgetFrom\" class=\"form-control rounded-end-pill\" min=\"0\" step=\"100\" placeholder=\"Ex : 2500\">
  241.               </div>
  242.               <div class=\"form-text\">Indiquez une estimation pour nous guider.</div>
  243.             </div>
  244.             <div class=\"col-md-6\">
  245.               <label class=\"form-label\">Style d’hébergement</label>
  246.               <select name=\"boardType\" class=\"form-select rounded-pill\">
  247.                 <option value=\"\">— Indifférent —</option>
  248.                 <option>Room Only</option>
  249.                 <option>Petit-déjeuner</option>
  250.                 <option>Demi-pension</option>
  251.                 <option>Pension complète</option>
  252.                 <option>All Inclusive</option>
  253.               </select>
  254.             </div>
  255.             <div class=\"col-12\">
  256.               <label class=\"form-label\">Activités/ambiance souhaitées</label>
  257.               <input type=\"text\" name=\"interests\" class=\"form-control rounded-pill\" placeholder=\"Plages, randonnée, road trip, croisière, culture, gastronomie…\">
  258.             </div>
  259.           </div>
  260.           ";
  261.         // line 123
  262.         yield "          <h2 class=\"h5 fw-bold mb-3\">Votre message</h2>
  263.           <div class=\"mb-4\">
  264.             <textarea name=\"message\" rows=\"6\" class=\"form-control rounded-4\" placeholder=\"Parlez-nous de votre projet, vos envies, vos impératifs de dates…\"></textarea>
  265.           </div>
  266.           ";
  267.         // line 134
  268.         yield "
  269.         </div>
  270.       </div>
  271.     </div>
  272.     ";
  273.         // line 140
  274.         yield "    <div class=\"col-12 col-lg-4\">
  275.       <div class=\"card border-0 shadow-sm rounded-4 sticky-lg-top\" style=\"top:1.25rem;\">
  276.         <div class=\"card-body p-4\">
  277.           <h2 class=\"h5 fw-bold mb-3\">Vos coordonnées</h2>
  278.           <div class=\"mb-3\">
  279.             <label class=\"form-label\">Nom & prénom</label>
  280.             <input type=\"text\" name=\"fullName\" class=\"form-control rounded-pill\" required>
  281.           </div>
  282.           <div class=\"mb-3\">
  283.             <label class=\"form-label\">Email</label>
  284.             <input type=\"email\" name=\"email\" class=\"form-control rounded-pill\" required>
  285.           </div>
  286.           <div class=\"mb-3\">
  287.             <label class=\"form-label\">Téléphone</label>
  288.             <input type=\"tel\" name=\"phone\" class=\"form-control rounded-pill\" placeholder=\"+590 …\">
  289.           </div>
  290.           <div class=\"form-check my-3\">
  291.             <input class=\"form-check-input\" type=\"checkbox\" value=\"1\" name=\"newsletter\" id=\"nl\">
  292.             <label class=\"form-check-label\" for=\"nl\">Je souhaite recevoir les inspirations Otropik</label>
  293.           </div>
  294.           <div class=\"form-check mb-4\">
  295.             <input class=\"form-check-input\" type=\"checkbox\" value=\"1\" name=\"rgpd\" id=\"rgpd\" required>
  296.             <label class=\"form-check-label\" for=\"rgpd\">
  297.               J’accepte que mes données soient utilisées pour me recontacter (RGPD).
  298.             </label>
  299.           </div>
  300.           <input type=\"hidden\" name=\"_token\" value=\"";
  301.         // line 169
  302.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->env->getRuntime('Symfony\Component\Form\FormRenderer')->renderCsrfToken("quote_request"), "html"nulltrue);
  303.         yield "\">
  304.           <div class=\"h-captcha mb-3\" data-sitekey=\"";
  305.         // line 171
  306.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape((isset($context["hcaptchaSiteKey"]) || array_key_exists("hcaptchaSiteKey"$context) ? $context["hcaptchaSiteKey"] : (function () { throw new RuntimeError('Variable "hcaptchaSiteKey" does not exist.'171$this->source); })()), "html"nulltrue);
  307.         yield "\"></div>
  308.           <script src=\"https://js.hcaptcha.com/1/api.js\" async defer></script>
  309.           <button type=\"submit\" class=\"btn btn-primary w-100 rounded-pill py-2\">
  310.             <i class=\"bi bi-send me-1\"></i> Envoyer ma demande
  311.           </button>
  312.           <p class=\"small text-muted mt-3 mb-0\">
  313.             Réponse rapide sous 24–48h ouvrées par un spécialiste Otropik.
  314.           </p>
  315.         </div>
  316.       </div>
  317.     </div>
  318.   </form>
  319. </section>
  320. ";
  321.         
  322.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  323.         
  324.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  325.         return; yield '';
  326.     }
  327.     /**
  328.      * @codeCoverageIgnore
  329.      */
  330.     public function getTemplateName()
  331.     {
  332.         return "default/devis.html.twig";
  333.     }
  334.     /**
  335.      * @codeCoverageIgnore
  336.      */
  337.     public function isTraitable()
  338.     {
  339.         return false;
  340.     }
  341.     /**
  342.      * @codeCoverageIgnore
  343.      */
  344.     public function getDebugInfo()
  345.     {
  346.         return array (  343 => 171,  338 => 169,  307 => 140,  300 => 134,  293 => 123,  264 => 95,  246 => 78,  228 => 61,  217 => 59,  213 => 58,  205 => 52,  197 => 46,  194 => 45,  188 => 44,  177 => 42,  172 => 41,  167 => 40,  164 => 38,  153 => 28,  147 => 26,  140 => 24,  138 => 23,  134 => 21,  131 => 19,  121 => 18,  109 => 16,  102 => 11,  98 => 10,  91 => 5,  81 => 4,  61 => 3,  38 => 1,);
  347.     }
  348.     public function getSourceContext()
  349.     {
  350.         return new Source("{% extends 'base.html.twig' %}
  351. {% block title %}Demande de devis voyage – OTropik Agence de voyage en Guadeloupe{% endblock %}
  352. {% block seo %}
  353.  <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.\" >
  354. \t<meta property=\"og:title\" content=\"Demande de devis voyage – OTropik Guadeloupe\" />
  355. \t<meta property=\"og:type\" content=\"Website\" />
  356. \t<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.\" />
  357. \t<meta property=\"og:url\" content=\"{{absolute_url( app.request.uri)}}\" />
  358. \t<meta property=\"og:image\" content=\"{#{asset('img/asset/cardimg-fb.jpg')}#}\" />
  359. \t<meta name =\"twitter:card\" content=\"summary_large_image\" />
  360. \t<meta name=\"twitter:title\" content=\"Demande de devis voyage – OTropik Guadeloupe\">
  361. \t<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.\">
  362. \t<meta name=\"twitter:image\" content=\"{#{asset('img/asset/cardimg-fb.jpg')}#}\">
  363. {% endblock %}
  364. {% block body %}
  365. {# ===== HERO ===== #}
  366. <section class=\"position-relative text-white\">
  367.   <div class=\"ratio ratio-21x9\">
  368.     {% if banner.img %}
  369.   <img src=\"{{ asset('img/banner/')}}{{banner.img}}\" alt=\"Plage paradisiaque\" class=\"w-100 h-100 object-fit-cover\">
  370.   {% else %}
  371.     <img src=\"{{ asset('img/summer-holidays.jpg')}}\" alt=\"Inspiration voyage\" class=\"w-100 h-100 object-fit-cover\">
  372.   {% endif %}
  373.   </div>
  374.   <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\">
  375.     <div class=\"p-3\">
  376.       <h1 class=\"display-5 fw-bold mb-2\">Demandez votre devis sur-mesure</h1>
  377.       <p class=\"lead mb-0\">Dites-nous vos envies, on s’occupe de tout ✈️🌴</p>
  378.     </div>
  379.   </div>
  380. </section>
  381. {# ===== FORMULAIRE ===== #}
  382. <section class=\"container py-5\">
  383.   {# Message succès/erreur éventuel #}
  384.   {% for label, messages in app.flashes %}
  385.     {% for m in messages %}
  386.       <div class=\"alert alert-{{ label }} rounded-3\">{{ m }}</div>
  387.     {% endfor %}
  388.   {% endfor %}
  389.   <form method=\"post\" action=\"{{ path('quote.request.send') }}\" class=\"row g-4\" enctype=\"multipart/form-data\">
  390.     <div class=\"col-12 col-lg-8\">
  391.       <div class=\"card border-0 shadow-sm rounded-4\">
  392.         <div class=\"card-body p-4\">
  393.           {# ---- Bloc 1 : Votre voyage ---- #}
  394.           <h2 class=\"h5 fw-bold mb-3\">Votre voyage</h2>
  395.           <div class=\"row g-3 mb-4\">
  396.             <div class=\"col-md-6\">
  397.               <label class=\"form-label\">Type de voyage</label>
  398.               <select name=\"tripType\" class=\"form-select rounded-pill\" required>
  399.                 <option value=\"\" selected>— Sélectionnez —</option>
  400.                 {% for type in typeSejour %}
  401.                   <option value=\"{{type.id}}\">{{type.name}}</option>
  402.                 {% endfor %}
  403.               </select>
  404.             </div> 
  405.             <div class=\"col-md-6\">
  406.               <label class=\"form-label\">Destination souhaitée</label>
  407.               <input type=\"text\" name=\"destination\" class=\"form-control rounded-pill\" placeholder=\"Ex : Guadeloupe, Sainte-Lucie, Ouest USA…\" required>
  408.             </div>
  409.             <div class=\"col-md-6\">
  410.               <label class=\"form-label\">Date de départ</label>
  411.               <input type=\"date\" name=\"startDate\" class=\"form-control rounded-pill\">
  412.             </div>
  413.             <div class=\"col-md-6\">
  414.               <label class=\"form-label\">Durée (jours)</label>
  415.               <input type=\"number\" name=\"durationDays\" class=\"form-control rounded-pill\" min=\"1\" placeholder=\"Ex : 10\">
  416.             </div>
  417.           </div>
  418.           {# ---- Bloc 2 : Voyageurs ---- #}
  419.           <h2 class=\"h5 fw-bold mb-3\">Voyageurs</h2>
  420.           <div class=\"row g-3 mb-4\">
  421.             <div class=\"col-6 col-md-3\">
  422.               <label class=\"form-label\">Adultes</label>
  423.               <input type=\"number\" name=\"travAdults\" class=\"form-control rounded-pill\" min=\"1\" value=\"2\">
  424.             </div>
  425.             <div class=\"col-6 col-md-3\">
  426.               <label class=\"form-label\">Enfants</label>
  427.               <input type=\"number\" name=\"travChildren\" class=\"form-control rounded-pill\" min=\"0\" value=\"0\">
  428.             </div>
  429.             <div class=\"col-12 col-md-6\">
  430.               <label class=\"form-label\">Âges des enfants (si applicable)</label>
  431.               <input type=\"text\" name=\"childrenAges\" class=\"form-control rounded-pill\" placeholder=\"Ex : 4, 8\">
  432.             </div>
  433.           </div>
  434.           {# ---- Bloc 3 : Budget & préférences ---- #}
  435.           <h2 class=\"h5 fw-bold mb-3\">Budget & préférences</h2>
  436.           <div class=\"row g-3 mb-4\">
  437.             <div class=\"col-md-6\">
  438.               <label class=\"form-label\">Budget global (à partir de)</label>
  439.               <div class=\"input-group\">
  440.                 <span class=\"input-group-text\">€</span>
  441.                 <input type=\"number\" name=\"budgetFrom\" class=\"form-control rounded-end-pill\" min=\"0\" step=\"100\" placeholder=\"Ex : 2500\">
  442.               </div>
  443.               <div class=\"form-text\">Indiquez une estimation pour nous guider.</div>
  444.             </div>
  445.             <div class=\"col-md-6\">
  446.               <label class=\"form-label\">Style d’hébergement</label>
  447.               <select name=\"boardType\" class=\"form-select rounded-pill\">
  448.                 <option value=\"\">— Indifférent —</option>
  449.                 <option>Room Only</option>
  450.                 <option>Petit-déjeuner</option>
  451.                 <option>Demi-pension</option>
  452.                 <option>Pension complète</option>
  453.                 <option>All Inclusive</option>
  454.               </select>
  455.             </div>
  456.             <div class=\"col-12\">
  457.               <label class=\"form-label\">Activités/ambiance souhaitées</label>
  458.               <input type=\"text\" name=\"interests\" class=\"form-control rounded-pill\" placeholder=\"Plages, randonnée, road trip, croisière, culture, gastronomie…\">
  459.             </div>
  460.           </div>
  461.           {# ---- Bloc 4 : Message ---- #}
  462.           <h2 class=\"h5 fw-bold mb-3\">Votre message</h2>
  463.           <div class=\"mb-4\">
  464.             <textarea name=\"message\" rows=\"6\" class=\"form-control rounded-4\" placeholder=\"Parlez-nous de votre projet, vos envies, vos impératifs de dates…\"></textarea>
  465.           </div>
  466.           {# ---- Option : pièce jointe ---- 
  467.           <div class=\"mb-4\">
  468.             <label class=\"form-label\">Pièce jointe (facultatif)</label>
  469.             <input type=\"file\" name=\"attachment\" class=\"form-control\">
  470.             <div class=\"form-text\">PDF/JPG/PNG — 10 Mo max (itinéraire, inspiration…)</div>
  471.           </div>#}
  472.         </div>
  473.       </div>
  474.     </div>
  475.     {# ---- Colonne latérale : Contact & consentement ---- #}
  476.     <div class=\"col-12 col-lg-4\">
  477.       <div class=\"card border-0 shadow-sm rounded-4 sticky-lg-top\" style=\"top:1.25rem;\">
  478.         <div class=\"card-body p-4\">
  479.           <h2 class=\"h5 fw-bold mb-3\">Vos coordonnées</h2>
  480.           <div class=\"mb-3\">
  481.             <label class=\"form-label\">Nom & prénom</label>
  482.             <input type=\"text\" name=\"fullName\" class=\"form-control rounded-pill\" required>
  483.           </div>
  484.           <div class=\"mb-3\">
  485.             <label class=\"form-label\">Email</label>
  486.             <input type=\"email\" name=\"email\" class=\"form-control rounded-pill\" required>
  487.           </div>
  488.           <div class=\"mb-3\">
  489.             <label class=\"form-label\">Téléphone</label>
  490.             <input type=\"tel\" name=\"phone\" class=\"form-control rounded-pill\" placeholder=\"+590 …\">
  491.           </div>
  492.           <div class=\"form-check my-3\">
  493.             <input class=\"form-check-input\" type=\"checkbox\" value=\"1\" name=\"newsletter\" id=\"nl\">
  494.             <label class=\"form-check-label\" for=\"nl\">Je souhaite recevoir les inspirations Otropik</label>
  495.           </div>
  496.           <div class=\"form-check mb-4\">
  497.             <input class=\"form-check-input\" type=\"checkbox\" value=\"1\" name=\"rgpd\" id=\"rgpd\" required>
  498.             <label class=\"form-check-label\" for=\"rgpd\">
  499.               J’accepte que mes données soient utilisées pour me recontacter (RGPD).
  500.             </label>
  501.           </div>
  502.           <input type=\"hidden\" name=\"_token\" value=\"{{ csrf_token('quote_request') }}\">
  503.           <div class=\"h-captcha mb-3\" data-sitekey=\"{{ hcaptchaSiteKey }}\"></div>
  504.           <script src=\"https://js.hcaptcha.com/1/api.js\" async defer></script>
  505.           <button type=\"submit\" class=\"btn btn-primary w-100 rounded-pill py-2\">
  506.             <i class=\"bi bi-send me-1\"></i> Envoyer ma demande
  507.           </button>
  508.           <p class=\"small text-muted mt-3 mb-0\">
  509.             Réponse rapide sous 24–48h ouvrées par un spécialiste Otropik.
  510.           </p>
  511.         </div>
  512.       </div>
  513.     </div>
  514.   </form>
  515. </section>
  516. {% endblock %}
  517. ""default/devis.html.twig""/home/ladomitiyc/otropik/templates/default/devis.html.twig");
  518.     }
  519. }