BookingController :: singleOffer
Request
GET Parameters
No GET parameters
POST Parameters
No POST parameters
Uploaded Files
No files were uploaded
Request Attributes
| Key | Value |
|---|---|
| _controller | "App\Flexy\FrontBundle\Controller\BookingController::singleOffer" |
| _firewall_context | "security.firewall.map.context.main" |
| _links | Fig\Link\GenericLinkProvider {#3318 -links: [ "0000000000000cf80000000000000000" => Fig\Link\Link {#3320 -href: "http://saisimmo.gebanalysis.cloud/public/api/docs.jsonld" -rel: [ "http://www.w3.org/ns/hydra/core#apiDocumentation" => true ] -attributes: [] } ] } |
| _remove_csp_headers | true |
| _route | "single_offer" |
| _route_params | [ "id" => "1646" ] |
| _security_firewall_run | "_security_main" |
| _stopwatch_token | "7ba03b" |
| id | "1646" |
| offer | App\Flexy\ShopBundle\Entity\Product\Product {#1975 -id: 1646 -name: "Chambre Double En All Inclusive" -image: "image_6298_4_2_1.png" -price: 50000.0 -description: "<div><strong>L'offre<br></strong><br></div><ul><li>Offre : <strong>Du 01/09/2021 au 15/10/2021</strong> et du <strong>01/11/2021 au 23/12/2021</strong> : 1 nuit pour 2 adultes +1 enfant (-12 ans) en chambre double avec animation et en all inclusive à Marrakech Ryads Parc à 1180 dhs</li><li><strong>Inclus dans l’offre :</strong></li><li>Hébergement en chambre double </li><li>1 enfant de moins de 12 ans partageant la chambre des 02 parents: gratuit</li><li>Formule All Inclusive</li><li>Parking gratuit 24h/24h</li><li>Mini club pour enfant entre 4 ans et 12 ans (jeux et animation)</li><li>Activités sportives : basket, volley, tennis, football……et salle de musculation</li><li>Connexion WIFI gratuite</li><li>Prestations SPA en extra</li><li><strong>Supplément :</strong></li><li>Taxes de séjour: 19.80 DH par adulte et par nuit à payer sur place</li><li>Supplément 2ème enfant de (- 12 ans) dans la même chambre : 250 DH par nuit en All Inclusive à payer sur place</li><li>Supplément 3ème et 4ème adulte : 400 DH par nuit en All Inclusive à payer sur place</li><li><strong>Conditions hôtel:</strong></li><li>Capacité maximale de la chambre : </li><li>2 adultes, 1 enfant de -12 ans, et 1 bébé de -2 ans (possibilité de rajouter un lit bébé).</li><li>2 adultes, 2 enfants de -12 ans, et 1 bébé de -2 ans (pas de rajout de lit bébé. Celui-ci partagera le lit des parents).</li><li>3 adultes et 1 bébé de -2 ans (possibilité de rajouter un lit bébé).</li><li>4 adultes et 1 bébé de -2 ans (pas de rajout de lit bébé. Celui-ci partagera le lit des parents)</li><li>Check-in : 14h</li><li>Check-out: midi</li><li><strong>Conditions enfant:</strong></li><li>Est considérée bébé toute personne ayant moins de 2 ans le jour du départ.</li><li>Est considérée enfant toute personne ayant entre 2 et 11.99 ans le jour du départ.</li><li>Est considérée adulte toute personne ayant 12 ans et plus le jour du départ.</li><li>Un changement de catégorie de chambre pourra être appliqué selon le nombre et l’âge des clients, ainsi que la disponibilité des chambres, moyennant un supplément.</li><li><strong>Conditions & réservation:</strong></li><li>Après confirmation de réservation aucune annulation n’est acceptée</li><li>Bon non annulable et non remboursable</li><li><strong>Bon valable pour les séjours du 20/09/2021 au 23/12/2021 inclus</strong></li></ul>" -categoriesProduct: Doctrine\ORM\PersistentCollection {#1973 …} -attributValues: Doctrine\ORM\PersistentCollection {#1940 …} -oldPrice: 70000.0 -quantity: null -productType: "offer" -metaTitle: null -metaDescription: null -metaKeywords: [] -images: Doctrine\ORM\PersistentCollection {#1994 …} -slug: "chambre-double-en-all-inclusive" -createdAt: DateTimeImmutable @1646833068 {#1978 : 2022-03-09 13:37:48.0 UTC (+00:00) } -productVariants: Doctrine\ORM\PersistentCollection {#2032 …} -isPriceReducedPerPercent: null -percentReduction: null -skuCode: null -orderItems: Doctrine\ORM\PersistentCollection {#2075 …} -promotion: null -vendor: null -brand: Proxies\__CG__\App\Flexy\ShopBundle\Entity\Brand {#2093 …} -shortDescription: "Quel bonheur, quel plaisir que de quitter notre routine habituelle pour la découverte de nouvelles contrées et de nouveaux paysages. Envie de partir pour séjourner à Marrakech." -isPublished: true -comments: Doctrine\ORM\PersistentCollection {#2123 …} -skuCodeShop: "OM22030901481646" -endAt: DateTimeImmutable @1651329300 {#1977 : 2022-04-30 14:35:00.0 UTC (+00:00) } -parentCategory: Proxies\__CG__\App\Flexy\ShopBundle\Entity\Product\CategoryProduct {#2159 …} -customer: null -isDeals: null -weight: null } |
Request Headers
| Header | Value |
|---|---|
| accept | "*/*" |
| accept-encoding | "gzip, br, deflate" |
| from | "gptbot(at)openai.com" |
| host | "saisimmo.gebanalysis.cloud" |
| user-agent | "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)" |
| x-openai-host-hash | "61994437" |
| x-php-ob-level | "0" |
Request Content
Request content not available (it was retrieved as a resource).
Response
Response Headers
| Header | Value |
|---|---|
| cache-control | "no-cache, private" |
| content-type | "text/html; charset=UTF-8" |
| date | "Sat, 13 Dec 2025 07:11:09 GMT" |
| link | "<http://saisimmo.gebanalysis.cloud/public/api/docs.jsonld>; rel="http://www.w3.org/ns/hydra/core#apiDocumentation"" |
| x-debug-exception | "Impossible%20to%20access%20an%20attribute%20%28%22limitedAmount%22%29%20on%20a%20null%20variable." |
| x-debug-exception-file | "%2Fhome%2Fgebcloud%2Fpublic_html%2Fsaisimmo.gebanalysis.cloud%2Fsrc%2FFlexy%2FFrontBundle%2Ftemplates%2Fbooking%2FsingleOffer%2FsingleOffer.html.twig:185" |
| x-debug-token | "673374" |
| x-debug-token-link | "http://saisimmo.gebanalysis.cloud/public/_profiler/60f209" |
| x-previous-debug-token | "60f209" |
| x-robots-tag | "noindex" |
Cookies
Request Cookies
No request cookies
Response Cookies
No response cookies
Session
Session Metadata
No session metadata
Session Attributes
No session attributes
Session Usage
0
Usages
Stateless check enabled
Session not used.
Flashes
Flashes
No flash messages were created.
Server Parameters
Server Parameters
Defined in .env
| Key | Value |
|---|---|
| APP_ENV | "dev" |
| APP_SECRET | "8bfa6738381928d001a7ba06acf48d60" |
| CORS_ALLOW_ORIGIN | "^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$" |
| DATABASE_URL | "mysql://gebcloud_omall:gebcloud_omall@127.0.0.1:3306/gebcloud_omall?serverVersion=13" |
| LOCO_DSN | "loco://RriQLWg_B0maUnOAJNP7l23B1MjG_4HSd@default" |
| MAILER_URL | "smtp://devomall@fibysen.com:devomall2022@localhost" |
Defined as regular env variables
| Key | Value |
|---|---|
| APP_DEBUG | "1" |
| BASE | "/public" |
| CONTEXT_DOCUMENT_ROOT | "/home/gebcloud/public_html/saisimmo.gebanalysis.cloud" |
| CONTEXT_PREFIX | "" |
| DOCUMENT_ROOT | "/home/gebcloud/public_html/saisimmo.gebanalysis.cloud" |
| FCGI_ROLE | "RESPONDER" |
| GATEWAY_INTERFACE | "CGI/1.1" |
| HOME | "/home/gebcloud" |
| HTTP_ACCEPT | "*/*" |
| HTTP_ACCEPT_ENCODING | "gzip, br, deflate" |
| HTTP_FROM | "gptbot(at)openai.com" |
| HTTP_HOST | "saisimmo.gebanalysis.cloud" |
| HTTP_USER_AGENT | "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)" |
| HTTP_X_OPENAI_HOST_HASH | "61994437" |
| PATH | "/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin" |
| PHP_SELF | "/public/index.php" |
| QUERY_STRING | "" |
| REDIRECT_BASE | "/public" |
| REDIRECT_SCRIPT_URI | "http://saisimmo.gebanalysis.cloud/public/booking/single-offer/1646" |
| REDIRECT_SCRIPT_URL | "/public/booking/single-offer/1646" |
| REDIRECT_STATUS | "200" |
| REDIRECT_UNIQUE_ID | "aT0RjTYBDySjN_O5yGfH9wAAAAg" |
| REDIRECT_URL | "/public/booking/single-offer/1646" |
| REMOTE_ADDR | "74.7.241.60" |
| REMOTE_PORT | "50296" |
| REQUEST_METHOD | "GET" |
| REQUEST_SCHEME | "http" |
| REQUEST_TIME | 1765609869 |
| REQUEST_TIME_FLOAT | 1765609869.1613 |
| REQUEST_URI | "/public/booking/single-offer/1646" |
| SCRIPT_FILENAME | "/home/gebcloud/public_html/saisimmo.gebanalysis.cloud/public/index.php" |
| SCRIPT_NAME | "/public/index.php" |
| SCRIPT_URI | "http://saisimmo.gebanalysis.cloud/public/booking/single-offer/1646" |
| SCRIPT_URL | "/public/booking/single-offer/1646" |
| SERVER_ADDR | "88.99.140.51" |
| SERVER_ADMIN | "webmaster@saisimmo.gebanalysis.cloud" |
| SERVER_NAME | "saisimmo.gebanalysis.cloud" |
| SERVER_PORT | "80" |
| SERVER_PROTOCOL | "HTTP/1.1" |
| SERVER_SIGNATURE | "" |
| SERVER_SOFTWARE | "Apache" |
| SYMFONY_DOTENV_VARS | "APP_ENV,APP_SECRET,DATABASE_URL,CORS_ALLOW_ORIGIN,LOCO_DSN,MAILER_URL" |
| UNIQUE_ID | "aT0RjTYBDySjN_O5yGfH9wAAAAg" |
| USER | "gebcloud" |
| argc | 0 |
| argv | [] |
| proxy-nokeepalive | "1" |
Sub Requests 1
ErrorController (token = 60f209)
| Key | Value |
|---|---|
| _controller | "error_controller" |
| _links | Fig\Link\GenericLinkProvider {#2736 -links: [ "0000000000000aa40000000000000000" => Fig\Link\Link {#2724 -href: "http://saisimmo.gebanalysis.cloud/public/api/docs.jsonld" -rel: [ "http://www.w3.org/ns/hydra/core#apiDocumentation" => true ] -attributes: [] } ] } |
| _stopwatch_token | "a76c00" |
| exception | Twig\Error\RuntimeError {#2367 #message: "Impossible to access an attribute ("limitedAmount") on a null variable." #code: 0 #file: "/home/gebcloud/public_html/saisimmo.gebanalysis.cloud/src/Flexy/FrontBundle/templates/booking/singleOffer/singleOffer.html.twig" #line: 185 -lineno: 185 -name: "@Flexy\FrontBundle/templates/booking/singleOffer/singleOffer.html.twig" -rawMessage: "Impossible to access an attribute ("limitedAmount") on a null variable." -sourcePath: "/home/gebcloud/public_html/saisimmo.gebanalysis.cloud/src/Flexy/FrontBundle/templates/booking/singleOffer/singleOffer.html.twig" -sourceCode: """ {% extends '@Flexy/FrontBundle/templates/booking/layout.html.twig' %}\n \n {% block body %}\n <style>\n \n .countersection .count{\n padding:10px !important;\n font-size:18px;\n }\n \n </style>\n \n <div class="body-wrapper">\n <!-- Begin Header Area -->\n \n <!-- Header Area End Here -->\n <!-- Begin Li's Breadcrumb Area -->\n <div class="breadcrumb-area menu-item">\n <div class="container simple-container">\n <div class="breadcrumb-content">\n <ul>\n <li><a href="{{path('front_home')}}">Accueil</a></li>\n \n {% for category in singleOffer.categoriesProduct %}\n \n <li ><a href="{{path('single_category_product',{id:category.id})}}">{{category}}</a></li>\n \n {% endfor %}\n <li class="active">{{singleOffer.name}}</li>\n \n \n </ul>\n </div>\n </div>\n </div>\n <!-- Li's Breadcrumb Area End Here -->\n <!-- content-wraper start -->\n <div class="content-wraper">\n <div class="container">\n <div class="row single-product-area">\n <div class="col-lg-8 col-md-5">\n <!-- Details de produit Left -->\n <div class="product-details-left sp-tab-style-left-page">\n \n <div class="product-details-images slider-navigation-1">\n \n \n \n <div class="lg-image menu-item">\n <a class="popup-img venobox vbox-item" href="/uploads/{{asset(singleOffer.image)}}" data-gall="myGallery">\n <img src="/uploads/{{asset(singleOffer.image)}}" alt="{{singleOffer.name}}">\n </a>\n </div>\n \n {% for image in singleOffer.images %}\n <div class="lg-image menu-item">\n <a class="popup-img venobox vbox-item" href="/uploads/images/products{{asset(image.path)}}" data-gall="myGallery">\n <img src="/uploads/images/products{{asset(image.path)}}" alt="{{image.alt}}">\n </a>\n </div>\n {% endfor %}\n \n \n \n </div>\n \n \n <div class="tab-style-left">\n \n \n <div class="sm-image"><img src="/uploads/{{asset(singleOffer.image)}}" alt="{{singleOffer.name}}"></div>\n {% for image in singleOffer.images %}\n <div class="sm-image"><img src="/uploads/images/products{{asset(image.path)}}" alt="{{image.alt}}"></div>\n {% endfor %}\n \n </div>\n </div>\n <!--// Details de produit Left -->\n </div>\n \n <div class="col-lg-4 col-md-5">\n <div class="product-details-view-content pt-60">\n <div class="product-info">\n \n <h2>{{singleOffer.name}}</h2>\n \n \n \n <p class="sell-by">\n \n {% if singleOffer.brand %} Marque: <a href="#">{{singleOffer.brand}}</a>{% endif %} {% if singleOffer.vendor %} / <a href="#"> Par {{singleOffer.vendor}} </a>{% endif %}</span>\n \n \n \n </p>\n {% if singleOffer.skuCode %}\n <span class="product-details-ref d-none">Reference: {{singleOffer.skuCode}}</span>\n {% endif %}\n \n <div class="price-box pt-20">\n <span class="new-price new-price-2">MAD {{singleOffer.formattedPrice}}</span>\n {% if singleOffer.oldPrice or singleOffer.oldPrice > 0 %}\n <span class="old-price">MAD {{singleOffer.oldPrice / 100}}</span>\n {% endif %}\n </div>\n \n \n {#<div class="countersection">\n <div data-endat="{{singleOffer.endAt|date("Y/m/d")}}" class="li-countdown"></div>\n \n </div>#}\n \n <div style="margin-top:15px;" class="product-desc">\n <p>\n <span>\n {{singleOffer.shortDescription|raw}}\n </span>\n </p>\n </div>\n \n \n <div class="rating-box pt-20">\n \n \n <h5>Rating : {{singleOffer.rating|number_format(1, '.', ',')}}/5</h5>\n \n \n <ul class="rating rating-with-review-item">\n {% if singleOffer.rating > 0 %}\n {% for stars in 1..singleOffer.rating|number_format %}\n <li><i class="fa fa-star"></i></li>\n \n {% endfor %}\n {% if singleOffer.rating|number_format < 5 %}\n {% for stars in singleOffer.rating|number_format..4 %}\n <li class="no-star"><i class="fa fa-star"></i></li>\n {% endfor %}\n {% endif %}\n \n {% else %}\n <li class="no-star"><i class="fa fa-star"></i></li>\n <li class="no-star"><i class="fa fa-star"></i></li>\n <li class="no-star"><i class="fa fa-star"></i></li>\n <li class="no-star"><i class="fa fa-star"></i></li>\n <li class="no-star"><i class="fa fa-star"></i></li>\n {% endif %}\n \n \n \n \n \n \n <li class="menu-item" ><a href="#reviews" id="showcomments"> Avis ({{ singleOffer.comments|length }}) <i class="fa fa-comments" ></i> </a></li>\n \n \n \n </ul>\n </div>\n \n \n \n \n \n \n {#<div class="single-add-to-cart">\n <form action="#" class="cart-quantity d-none">\n \n <button data-type="{{singleOffer.productType}}" data-limitedamount="{{singleOffer.vendor.limitedAmount}}" data-weight="{{singleOffer.weight}}" data-collecte="{{singleOffer.vendor.addressCollecte}}" data-vendor="{{singleOffer.vendor.id}}" data-id="{{singleOffer.id}}" data-name="{{singleOffer.name}}" data-image="uploads/{{asset(singleOffer.image)}}" data-price="{{singleOffer.formattedPrice}}" data-url="{{path('single_product',{id:singleOffer.id}) }}" class="add-cart add-to-cart active " >Réserver</button>\n </form>\n \n <a class="review-links add-cart add-to-cart mt-3" style="c" href="#" data-toggle="modal" data-target="#book-modal">Réserver maintenant</a>\n \n </div>#}\n \n <div class="single-add-to-cart">\n <form action="#" class="cart-quantity">\n {# <div class="quantity">\n <label>Quantité</label>\n <div class="cart-plus-minus">\n <input class="cart-plus-minus-box" value="1" type="text">\n <div class="dec qtybutton"><i class="fa fa-angle-down"></i></div>\n <div class="inc qtybutton"><i class="fa fa-angle-up"></i></div>\n </div>\n </div>#}\n <button data-type="{{singleOffer.productType}}" data-limitedamount="{{singleOffer.vendor.limitedAmount}}" data-weight="{{singleOffer.weight}}" data-collecte="{{singleOffer.vendor.addressCollecte}}" data-vendor="{{singleOffer.vendor.id}}" data-id="{{singleOffer.id}}" data-name="{{singleOffer.name}}" data-image="uploads/{{asset(singleOffer.image)}}" data-price="{{singleOffer.formattedPrice}}" data-url="{{path('single_product',{id:singleOffer.id}) }}" class="add-cart add-to-cart active add-product-to-cart" >Ajouter au panier</button>\n \n </form>\n </div>\n \n <div class="booking-form-modal" >\n \n <!-- Begin Prévisualiser | Modal Area -->\n <div class="modal fade modal-wrapper" id="book-modal" >\n <div class="modal-dialog modal-dialog-centered" role="document">\n <div class="modal-content">\n <div class="modal-body">\n \n <button type="button" class="close" data-dismiss="modal" aria-label="Close">\n <span aria-hidden="true">×</span>\n </button>\n <div class="modal-inner-area row">\n \n <div class="col-lg-12">\n <div class="li-review-content">\n <!-- Begin Feedback Area -->\n <div class="feedback-area">\n <div class="feedback">\n \n \n \n \n \n \n \n <form action="#" class="cart-quantity">\n \n \n <div class="quantity d-none">\n <label>Quantité</label>\n <div class="cart-plus-minus">\n <input class="cart-plus-minus-box" value="1" type="text">\n <div class="dec qtybutton"><i class="fa fa-angle-down"></i></div>\n <div class="inc qtybutton"><i class="fa fa-angle-up"></i></div>\n </div>\n </div>\n \n <div class="row" >\n {% if singleOffer.brand.id == 8 %}\n <div class="col-6" >\n <p class="feedback-form">\n <label for="feedback">Choisissez la date de depart</label>\n <input type="datetime-local" name="date-start" />\n </p>\n \n </div>\n <div class="col-6" >\n <p class="feedback-form">\n <label for="feedback">Choisissez la date d'arrivée</label>\n <input type="datetime-local" name="date-end" />\n </p>\n \n </div>\n \n <div class="col-6" >\n <p class="feedback-form">\n <label for="feedback">Nombre de personnes</label>\n \n <select name="nbrPerson">\n <option>1</option>\n <option>2</option>\n <option>3</option>\n <option>4</option>\n <option>5</option>\n <option>6</option>\n </select>\n </p>\n </div>\n \n <div class="col-6" >\n <p class="feedback-form">\n <label for="feedback">Nombre de chambre</label>\n <select name="nbrRooms">\n <option>1</option>\n <option>2</option>\n <option>3</option>\n </select>\n </p>\n \n </div>\n {% endif %}\n \n <div class="col-12" >\n <p class="feedback-form">\n <label for="feedback">Laissez nous une note (Facultatif)</label>\n <textarea id="feedback" name="comment" cols="45" rows="2" aria-required="true"></textarea>\n </p>\n </div>\n </div>\n \n \n \n \n \n \n \n \n \n \n \n \n <div class="feedback-input">\n \n \n <div class="feedback-btn pb-15">\n <a href="#" class="close register-button d-none" data-dismiss="modal" aria-label="Close">Annuler</a>\n \n <button data-limitedamount="{{singleOffer.vendor.limitedAmount}}" data-type="{{singleOffer.productType}}" data-weight="{{singleOffer.weight}}" data-id="{{singleOffer.id}}" data-collecte="{{singleOffer.vendor.addressCollecte}}" data-vendor="{{singleOffer.vendor.id}}" data-name="{{singleOffer.name}}" data-image="uploads/{{asset(singleOffer.image)}}" data-price="{{singleOffer.formattedPrice}}" data-url="{{path('single_offer',{id:singleOffer.id}) }}" class="add-cart add-to-cart active add-product-to-cart" >Réserver</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n <!-- Feedback Area End Here -->\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div> \n <!-- Prévisualiser | Modal Area End Here -->\n </div>\n \n <div class="menu-item product-additional-info pt-25">\n <div class="product-social-sharing pt-25">\n <ul>\n <li class="facebook"><a href="#"><i class="fa fa-facebook"></i>Facebook</a></li>\n <li class="twitter"><a href="#"><i class="fa fa-twitter"></i>Twitter</a></li>\n <li class="google-plus"><a href="#"><i class="fa fa-google-plus"></i>Google +</a></li>\n <li class="instagram"><a href="#"><i class="fa fa-instagram"></i>Instagram</a></li>\n </ul>\n </div>\n </div>\n \n \n \n \n </div>\n </div>\n </div> \n \n <!-- <div class="col-lg-3 col-md-3 ">\n <div class="block-reassurance ">\n \n <div class="row " > \n {% if singleOffer.vendor %}\n <div class="col-12 p-3 " >\n <div class="card actions p-3">\n <h5>Vendeur : <span class="badge badge-warning" >{{singleOffer.vendor}}</span></h5>\n \n <div>\n <p>\n <small>\n 100% Evaluation du vendeur<br>\n 67 abonnés <br>\n </small>\n <h6>Performance vendeur</h6>\n <p>\n <span class="badge badge-success text-white" ><i class="fa fa-star" ></i></span> Expeditions : <span class="badge badge-success text-white" >Excellent</span>\n <br>\n <span class="badge badge-success text-white" ><i class="fa fa-star" ></i></span> Qualité : <span class="badge badge-warning text-white" >Moyen</span>\n <br>\n <span class="badge badge-success text-white" ><i class="fa fa-star" ></i></span> Avis consommateurs : <span class="badge badge-warning text-white" >Moyen</span>\n \n </p>\n \n </p>\n </div>\n \n </div>\n </div>\n {% endif %}\n \n </div>\n \n \n </div>\n </div>-->\n </div>\n </div>\n </div>\n <!-- content-wraper end -->\n <!-- Begin Product Area -->\n <div class="product-area pt-35">\n <div class="container">\n <div class="row">\n <div class="col-lg-12">\n <div class="li-product-tab">\n <ul class="nav li-product-menu">\n <li><a class="active" data-toggle="tab" href="#description" id="description_pro"><span>Description</span></a></li>\n <!-- <li><a data-toggle="tab" href="#product-details" id="description_technique"><span>Descriptif technique</span></a></li>-->\n <li><a data-toggle="tab" href="#reviews" id="comments"><span>Avis</span></a></li>\n </ul> \n </div>\n <!-- Begin Li's Tab Menu Content Area -->\n </div>\n </div>\n <div class="tab-content">\n <div id="description" class="tab-pane active show" role="tabpanel">\n <div class="product-description">\n <span>\n {{singleOffer.description|raw}}\n </span>\n </div>\n </div>\n <div id="product-details" class="tab-pane p-5" role="tabpanel">\n <table class="table table-sm ">\n \n <tbody>\n <tr>\n <th scope="row">Modele</th>\n <td>MOD{{singleOffer.skuCode}}</td>\n </tr>\n <tr>\n <th scope="row">Marque</th>\n <td>{{singleOffer.brand}}</td>\n </tr>\n <tr>\n <th scope="row">SKU</th>\n <td>{{singleOffer.skuCode}}</td>\n </tr>\n <tr>\n <th scope="row">Poids (Kg)</th>\n <td>0.9 </td>\n </tr>\n \n \n \n \n </tbody>\n </table>\n </div>\n <div id="reviews" class="tab-pane" role="tabpanel">\n <div class="product-reviews">\n \n <div class="container">\t\t\n \t\t<div class="row">\n \t\t\t<div class="col-sm-3">\n \t\t\t\t<div class="rating-block">\n \t\t\t\t\t<h4>AVIS </h4>\n \t\t\t\t\t<h2 class="bold padding-bottom-7"> {{singleOffer.rating|number_format(1, '.', ',')}} <small>/ 5</small></h2>\n \t\t\t\t\t\n \n {% if singleOffer.rating|number_format(1, '.', ',') > 0 %}\n {% for stars in 1..singleOffer.rating|number_format %}\n \n <button type="button" class="btn btn-warning btn-sm" aria-label="Left Align">\n \t\t\t\t\t <i class="fa fa-star"></i>\n \t\t\t\t\t </button> \n {% endfor %}\n \n {% if singleOffer.rating|number_format < 5 %}\n {% for stars in singleOffer.rating|number_format..4 %}\n <button type="button" class="btn btn-default btn-grey btn-sm" aria-label="Left Align">\n \t\t\t\t\t <i class="fa fa-star"></i>\n \t\t\t\t\t</button>\n {% endfor %}\n {% endif %}\n {% else %} \n <button type="button" class="btn btn-default btn-grey btn-sm" aria-label="Left Align"> <i class="fa fa-star"></i>\t</button>\n <button type="button" class="btn btn-default btn-grey btn-sm" aria-label="Left Align"> <i class="fa fa-star"></i>\t</button>\n <button type="button" class="btn btn-default btn-grey btn-sm" aria-label="Left Align"> <i class="fa fa-star"></i>\t</button>\n <button type="button" class="btn btn-default btn-grey btn-sm" aria-label="Left Align"> <i class="fa fa-star"></i>\t</button>\n <button type="button" class="btn btn-default btn-grey btn-sm" aria-label="Left Align"> <i class="fa fa-star"></i>\t</button>\n \n \n {% endif %} \n \n \n \t\t\t\t</div>\n \t\t\t</div>\n \t\t\t<div class="col-sm-3">\n \t\t\t\t<h4> </h4>\n \t\t\t\t<div class="pull-left">\n \t\t\t\t\t<div class="pull-left" style="width:35px; line-height:1;">\n \t\t\t\t\t\t<div style="height:9px; margin:5px 0;">5 <i class="fa fa-star"></i> </div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-left" style="width:180px;">\n \t\t\t\t\t\t<div class="progress" style="height:9px; margin:8px 0;">\n {% set percentage = 0 %}\n {% if singleOffer.getStars5 > 0 %}\n {% set percentage = (singleOffer.getStars5 / singleOffer.comments|length ) * 100 %}\n {% endif %}\n \t\t\t\t\t\t <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="5" aria-valuemin="0" aria-valuemax="5" style="width: {{ percentage }}%">\n \t\t\t\t\t\t\t<span class="sr-only">80% Complete (danger)</span>\n \t\t\t\t\t\t </div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-right" style="margin-left:10px;"> {{singleOffer.getStars5}}</div>\n \t\t\t\t</div>\n \t\t\t\t<div class="pull-left">\n \t\t\t\t\t<div class="pull-left" style="width:35px; line-height:1;">\n \t\t\t\t\t\t<div style="height:9px; margin:5px 0;">4 <i class="fa fa-star"></i> </div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-left" style="width:180px;">\n \t\t\t\t\t\t<div class="progress" style="height:9px; margin:8px 0;">\n {% set percentage = 0 %}\n {% if singleOffer.getStars4 > 0 %}\n {% set percentage = (singleOffer.getStars4 / singleOffer.comments|length ) * 100 %}\n {% endif %}\n \t\t\t\t\t\t <div class="progress-bar progress-bar-primary" role="progressbar" aria-valuenow="4" aria-valuemin="0" aria-valuemax="5" style="width: {{percentage}}%">\n \t\t\t\t\t\t\t<span class="sr-only">80% Complete (danger)</span>\n \t\t\t\t\t\t </div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-right" style="margin-left:10px;">\n \n {{singleOffer.getStars4}}\n \n </div>\n \t\t\t\t</div>\n \t\t\t\t<div class="pull-left">\n \t\t\t\t\t<div class="pull-left" style="width:35px; line-height:1;">\n \t\t\t\t\t\t<div style="height:9px; margin:5px 0;">3 <i class="fa fa-star"></i></div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-left" style="width:180px;">\n \t\t\t\t\t\t<div class="progress" style="height:9px; margin:8px 0;">\n {% set percentage = 0 %}\n {% if singleOffer.getStars3 > 0 %}\n {% set percentage = (singleOffer.getStars3 / singleOffer.comments|length ) * 100 %}\n {% endif %}\n \t\t\t\t\t\t <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="3" aria-valuemin="0" aria-valuemax="5" style="width:{{percentage}}%">\n \t\t\t\t\t\t\t<span class="sr-only">80% Complete (danger)</span>\n \t\t\t\t\t\t </div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-right" style="margin-left:10px;">{{singleOffer.getStars3}}</div>\n \t\t\t\t</div>\n \t\t\t\t<div class="pull-left">\n \t\t\t\t\t<div class="pull-left" style="width:35px; line-height:1;">\n \t\t\t\t\t\t<div style="height:9px; margin:5px 0;">2 <i class="fa fa-star"></i></div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-left" style="width:180px;">\n \t\t\t\t\t\t<div class="progress" style="height:9px; margin:8px 0;">\n {% set percentage = 0 %}\n {% if singleOffer.getStars2 > 0 %}\n {% set percentage = (singleOffer.getStars2 / singleOffer.comments|length ) * 100 %}\n {% endif %}\n \t\t\t\t\t\t <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="5" style="width: {{percentage}}%">\n \t\t\t\t\t\t\t<span class="sr-only">80% Complete (danger)</span>\n \t\t\t\t\t\t </div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-right" style="margin-left:10px;">{{singleOffer.getStars2}}</div>\n \t\t\t\t</div>\n \t\t\t\t<div class="pull-left">\n \t\t\t\t\t<div class="pull-left" style="width:35px; line-height:1;">\n \t\t\t\t\t\t<div style="height:9px; margin:5px 0;">1 <i class="fa fa-star"></i></div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-left" style="width:180px;">\n \t\t\t\t\t\t<div class="progress" style="height:9px; margin:8px 0;">\n {% set percentage = 0 %}\n {% if singleOffer.getStars1 > 0 %}\n {% set percentage = (singleOffer.getStars1 / singleOffer.comments|length ) * 100 %}\n {% endif %}\n \t\t\t\t\t\t <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="1" aria-valuemin="0" aria-valuemax="5" style="width: {{percentage}}%">\n \t\t\t\t\t\t\t<span class="sr-only">80% Complete (danger)</span>\n \t\t\t\t\t\t </div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="pull-right" style="margin-left:10px;">{{singleOffer.getStars1}}</div>\n \t\t\t\t</div>\n \t\t\t</div>\t\t\t\n \t\t</div>\t\t\t\n \t\t\n \t\t<div class="row">\n \t\t\t<div class="col-sm-7">\n \n \t\t\t\t<hr/>\n \t\t\t\t<div class="review-block">\n {% for singleComment in singleOffer.comments %}\n \t\t\t\t\t<div class="row">\n \t\t\t\t\t\t<div class="col-sm-3">\n \t\t\t\t\t\t\t<img src="http://dummyimage.com/60x60/666/ffffff&text=No+Image" class="img-rounded">\n \t\t\t\t\t\t\t<div class="review-block-name"><b> {{singleComment.customer.lastName}} {{singleComment.customer.firstName}}</b></div>\n \t\t\t\t\t\t\t<div class="review-block-date">{{singleComment.createdAt|date("Y-m-d H:i")}} </div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t\t<div class="col-sm-9">\n \t\t\t\t\t\t\t<div class="review-block-rate">\n \n {% for stars in 1..singleComment.rating %}\n \t<button type="button" class="btn btn-warning btn-xs" aria-label="Left Align">\n \t\t\t\t\t\t\t\t <i class="fa fa-star"></i>\n \t\t\t\t\t\t\t\t</button>\n \n {% endfor %}\n \t\t\t\t\t\t\t\n \t\t\t\t\t\t\t\t {% if singleComment.rating < 5 %}\n {% for stars in singleComment.rating..4 %}\n \t\t\t\t\t\t\t\t<button type="button" class="btn btn-default btn-grey btn-xs" aria-label="Left Align">\n \t\t\t\t\t\t\t\t <i class="fa fa-star"></i>\n \t\t\t\t\t\t\t\t</button>\n {% endfor %}\n {% endif %}\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t\t<div class="review-block-title">COMMENTAIRES</div>\n \t\t\t\t\t\t\t<div class="review-block-description">{{singleComment.comment|raw}}</div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \n \t\t\t\t\t<hr/>\n {% endfor %}\n \t\t\t\t\t \n \n \t\t\t\t</div>\n \t\t\t</div>\n \t\t</div>\n \t\t\n </div> <!-- /container -->\n \n <div class="product-details-comment-block">\n {% for singleComment in singleOffer.comments %}\n \n \n <!-- <div class="comment-details">\n <div class="comment-author-infos pt-25">\n <span>\n {{singleComment.customer.lastName}} {{singleComment.customer.firstName}}\n <ul class="rating d-inline">\n {% for stars in 1..singleComment.rating %}\n <li><i class="fa fa-star"></i></li>\n \n {% endfor %}\n \n \n \n {% if singleComment.rating < 5 %}\n {% for stars in singleComment.rating..4 %}\n <li class="no-star"><i class="fa fa-star"></i></li>\n {% endfor %}\n {% endif %}\n \n \n </ul>\n </span>\n \n <em>{{singleComment.createdAt|date("Y-m-d H:i")}}</em>\n </div>\n \n <p>{{singleComment.comment|raw}}</p>\n </div>\n <hr style="margin:0;">-->\n {% endfor %}\n \n {% if is_granted("ROLE_CUSTOMER") %}\n \n <div class="review-btn">\n <a class="review-links" href="#" data-toggle="modal" data-target="#mymodal">Ajouter un commentaire!</a>\n </div>\n \n <!-- Begin Prévisualiser | Modal Area -->\n <div class="modal fade modal-wrapper" id="mymodal" >\n <div class="modal-dialog modal-dialog-centered" role="document">\n <div class="modal-content">\n <div class="modal-body">\n <h3 class="review-page-title">Ajouter un commentaire</h3>\n <div class="modal-inner-area row">\n <div class="col-lg-6">\n <div class="li-review-product">\n <img width="200px" src="/uploads/{{asset(singleOffer.image)}}" alt="Li's Product">\n <div class="li-review-product-desc">\n <p class="li-product-name">{{singleOffer.name}}</p>\n <p>\n <span>{{singleOffer.shortDescription|raw}}</span>\n </p>\n </div>\n </div>\n </div>\n <div class="col-lg-6">\n <div class="li-review-content">\n <!-- Begin Feedback Area -->\n <div class="feedback-area">\n <div class="feedback">\n <h3 class="feedback-title">Votre avis</h3>\n <form action="{{path('comment_product',{id:singleOffer.id})}}" method="POST">\n <p class="your-opinion">\n <label>Evaluer le produit</label>\n <span>\n <select name="rating" class="star-rating">\n <option value="1">1</option>\n <option value="2">2</option>\n <option value="3">3</option>\n <option value="4">4</option>\n <option value="5">5</option>\n </select>\n </span>\n </p>\n <p class="feedback-form">\n <label for="feedback">Votre commentaire</label>\n <textarea id="feedback" name="comment" cols="45" rows="8" aria-required="true"></textarea>\n </p>\n <div class="feedback-input">\n \n \n <div class="feedback-btn pb-15">\n <a href="#" class="close register-button d-none" data-dismiss="modal" aria-label="Close">Close</a>\n <button class="register-button" type="submit">Envoyer</button>\n </div>\n </div>\n </form>\n </div>\n </div>\n <!-- Feedback Area End Here -->\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div> \n <!-- Prévisualiser | Modal Area End Here -->\n \n \n {% endif %}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <!-- Product Area End Here -->\n <!-- Begin Li's PC Portable Product Area -->\n <section class="product-area li-laptop-product pt-30 pb-50">\n {# <div class="container">\n <div class="row">\n <!-- Begin Li's Section Area -->\n <div class="col-lg-12">\n <div class="li-section-title">\n <h2>\n <span>Produits en relation</span>\n </h2>\n </div>\n \n {#\n <div class="row">\n <div class="product-active owl-carousel">\n \n \n {% for singleOffer in associatedProducts %}\n {% \n include "@Flexy/FrontBundle/templates/products/includes/_singleOffer.html.twig" with\n {\n singleOffer:singleOffer,\n }\n %} \n {% endfor %}\n \n </div>\n </div>\n \n #}\n </div>\n <!-- Li's Section Area End Here -->\n </div>\n </div>\n </section> \n <!-- Li's PC Portable Product Area End Here -->\n <!-- Begin Footer Area -->\n \n \n </div>\n \n {% endblock %}\n \n {% block javascripts %}\n {{parent()}}\n \n <script>\n $(document).ready(function(){\n $.ajax({\n url: "{{path('departements_ajax')}}",\n data:{\n city:$("select[name='city']").val()\n },\n success:function(data){\n \n $("select[name='departement']").html(data);\n },\n });\n \n $("select[name='city'").change(function(){\n $.ajax({\n url: "{{path('departements_ajax')}}",\n data:{\n city:$(this).val()\n },\n success:function(data){\n \n $("select[name='departement']").html(data);\n },\n });\n });\n \n $("#showcomments").click(function(){\n \n $("#comments").addClass("active show");\n $("#reviews").addClass("active show");\n \n $("#description_technique").removeClass("active show");\n $("#product-details").removeClass("active show");\n \n $("#description_pro").removeClass("active show");\n $("#description").removeClass("active show");\n \n \n });\n \n \n (function () {\n const second = 1000,\n minute = second * 60,\n hour = minute * 60,\n day = hour * 24;\n \n //I'm adding this section so I don't have to keep updating this pen every year :-)\n //remove this if you don't need it\n let today = new Date(),\n \n \n dd = String(today.getDate()).padStart(2, "0"),\n mm = String(today.getMonth() + 1).padStart(2, "0"),\n yyyy = today.getFullYear(),\n nextYear = yyyy + 1,\n dayMonth = "09/30/", \n birthday = dayMonth + yyyy;\n \n today = mm + "/" + dd + "/" + yyyy;\n if (today > birthday) {\n birthday = dayMonth + nextYear;\n }\n //end\n \n const countDown = new Date(birthday).getTime(),\n x = setInterval(function() { \n \n const now = new Date().getTime(),\n distance = countDown - now;\n \n document.getElementById("days").innerText = Math.floor(distance / (day)),\n document.getElementById("hours").innerText = Math.floor((distance % (day)) / (hour)),\n document.getElementById("minutes").innerText = Math.floor((distance % (hour)) / (minute)),\n document.getElementById("seconds").innerText = Math.floor((distance % (minute)) / second);\n \n \n }, 0)\n }());\n \n });\n </script>\n \n {% endblock %} """ : { { twig_get_attribute(Environment $env, Source $source, $object, $item, array $arguments = [], $type = 'any', $isDefinedTest = false, $ignoreStrictCheck = false, $sandboxed = false, int $lineno = -1) … › |
| logger | Symfony\Bridge\Monolog\Logger {#431 …6} |