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