Exceptions
Exception
Twig\Error\ SyntaxError
Show exception properties
Twig\Error\SyntaxError {#16710 -lineno: 451 -rawMessage: "Unexpected "endif" tag (expecting closing tag for the "for" tag defined near line 364)." -source: Twig\Source {#13942 -code: """ <style>\n \t/* Modern Dropdowns */\n \t.custom-dropdown .dropdown-menu-custom {\n \t\tdisplay: none;\n \t\tborder: none;\n \t\tborder-radius: 16px;\n \t\tbox-shadow: 0 10px 40px rgba(0, 0, 0, 0.08); /* Soft luxury shadow */\n \t\tpadding: 1.5rem !important;\n \t\ttransform-origin: top center;\n \t\tz-index: 1100 !important;\n \t}\n \t.custom-dropdown.show .dropdown-menu-custom,\n \t.custom-dropdown.active .dropdown-menu-custom {\n \t\tdisplay: flex !important;\n \t\tflex-direction: column;\n \t\tgap: 12px;\n \t\tanimation: fadeInDropdown 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;\n \t}\n \t@keyframes fadeInDropdown {\n \t\tfrom {\n \t\t\topacity: 0;\n \t\t\ttransform: translateY(-8px) scale(0.98);\n \t\t}\n \t\tto {\n \t\t\topacity: 1;\n \t\t\ttransform: translateY(0) scale(1);\n \t\t}\n \t}\n \n \t/* Modern Pills */\n \t.filter-pill {\n \t\tpadding: 0.65rem 1.4rem;\n \t\tborder-radius: 50px;\n \t\tbackground-color: #f7f7f7;\n \t\tborder: 1px solid #f7f7f7;\n \t\ttransition: all 0.25s ease;\n \t\tfont-size: 0.85rem;\n \t\tfont-weight: 600;\n \t\tcolor: #222;\n \t\tletter-spacing: 0.3px;\n \t\tcursor: pointer;\n \t}\n \t.dropdown-trigger {\n \t\tcursor: pointer;\n \t}\n \t.filter-pill:hover {\n \t\tbackground-color: #e8e8e8;\n \t\tborder-color: #e8e8e8;\n \t}\n \t.filter-pill.active, .filter-pill.show {\n \t\tbackground-color: #000 !important;\n \t\tcolor: #fff !important;\n \t\tborder-color: #000 !important;\n \t}\n \t.filter-pill.active svg, .filter-pill.show svg {\n \t\tstroke: #fff;\n \t}\n \t.custom-dropdown.show .arrow-icon,\n \t.custom-dropdown.active .arrow-icon {\n \t\ttransform: rotate(180deg);\n \t}\n \t.transition-transform {\n \t\ttransition: transform 0.25s ease;\n \t\tdisplay: inline-block;\n \t}\n \n \t/* Modern Custom Checkbox/Radio */\n \t.modern-checkbox {\n \t\tappearance: none;\n \t\twidth: 22px;\n \t\theight: 22px;\n \t\tborder: 1.5px solid #d1d1d1;\n \t\tborder-radius: 6px;\n \t\toutline: none;\n \t\tcursor: pointer;\n \t\tposition: relative;\n \t\ttransition: all 0.2s ease-in-out;\n \t\tbackground-color: #fff;\n \t\tflex-shrink: 0;\n \t\tmargin: 0;\n \t}\n \t.modern-checkbox:checked {\n \t\tbackground-color: #000;\n \t\tborder-color: #000;\n \t}\n \t.modern-checkbox:checked::after {\n \t\tcontent: '';\n \t\tposition: absolute;\n \t\ttop: 50%;\n \t\tleft: 50%;\n \t\twidth: 6px;\n \t\theight: 11px;\n \t\tborder: solid white;\n \t\tborder-width: 0 2.5px 2.5px 0;\n \t\ttransform: translate(-50%, -60%) rotate(45deg);\n \t}\n \t.modern-radio {\n \t\tborder-radius: 50%;\n \t}\n \t.modern-radio:checked::after {\n \t\tborder: none;\n \t\twidth: 8px;\n \t\theight: 8px;\n \t\tbackground-color: white;\n \t\tborder-radius: 50%;\n \t\ttransform: translate(-50%, -50%);\n \t}\n \t.checkbox-item:hover .modern-checkbox {\n \t\tborder-color: #000;\n \t}\n \n \t/* Text styles inside dropdowns */\n \t.checkbox-text {\n \t\tfont-size: 0.9rem;\n \t\tfont-weight: 500;\n \t\tcolor: #333;\n \t\ttransition: color 0.2s ease;\n \t}\n \t.checkbox-item:hover .checkbox-text {\n \t\tcolor: #000;\n \t}\n \t.checkbox-count {\n \t\tfont-size: 0.8rem;\n \t\tcolor: #888;\n \t\tmargin-left: 4px;\n \t}\n \n \t/* New Collapsible Area Styles */\n \t.more-filters-collapse {\n \t\tbackground-color: #fcfcfc;\n \t\tborder-radius: 16px;\n \t\tmargin-top: 1rem;\n \t\tborder: 1px solid #eaeaea;\n \t}\n \n \t.more-filters-collapse .filter-section {\n \t\tmin-width: 220px;\n \t\tflex: 1;\n \t}\n </style>\n \n <<<<<<< Updated upstream\n <div class="d-flex flex-wrap justify-content-between align-items-center w-100 mb-4">\n \t<div\n \t\tclass="test_scroll_ver">\n \t\t{# Left Group: Primary Filters #}\n \t\t<div class="d-flex flex-wrap gap-3 align-items-center">\n \t\t\t{% if taxon is not defined or taxon is null %}\n \t\t\t\t{# 1. Catégorie #}\n \t\t\t\t{% if facets.taxons is defined %}\n =======\n <div\n \tclass="d-flex flex-wrap justify-content-between align-items-center w-100 mb-4">\n \t<div class="test_scroll_ver">\n \t{# Left Group: Primary Filters #}\n \t<div class="d-flex flex-wrap gap-3 align-items-center">\n \t\t{% if taxon is not defined or taxon is null %}\n \t\t\t{# 1. Catégorie #}\n \t\t\t{% if facets.taxons is defined %}\n \t\t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t\t<div class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t\t<span>Catégories</span>\n \t\t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t\t</span>\n \t\t\t\t\t</div>\n \t\t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 240px;">\n \t\t\t\t\t\t{% for bucket in facets.taxons %}\n \t\t\t\t\t\t\t{% if bucket.count > 0 %}\n \t\t\t\t\t\t\t\t{% set isChecked = (app.request.query.all.taxons is defined and bucket.key in app.request.query.all.taxons) %}\n \t\t\t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t\t\t<input type="checkbox" name="taxons[]" value="{{ bucket.key }}" {% if isChecked %} checked {% endif %} class="modern-checkbox">\n \t\t\t\t\t\t\t\t\t<span class="checkbox-text text-capitalize">{{ bucket.key|replace({'-': ' '}) }}\n \t\t\t\t\t\t\t\t\t\t<span class="checkbox-count">({{ bucket.count }})</span>\n \t\t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t\t</label>\n \t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \t\t\t{% endif %}\n \n \t\t\t{# 2. Prix #}\n \t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t<div class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t<span>Prix</span>\n \t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t</span>\n \t\t\t\t</div>\n \t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 220px;">\n \t\t\t\t\t{% set currentPrice = app.request.query.get('priceRange') %}\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="priceRange" value="under_150" {% if currentPrice == 'under_150' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text">- de 150 €</span>\n \t\t\t\t\t</label>\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="priceRange" value="150_300" {% if currentPrice == '150_300' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text">150 € - 300 €</span>\n \t\t\t\t\t</label>\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-4 cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="priceRange" value="over_300" {% if currentPrice == 'over_300' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text">300 € et +</span>\n \t\t\t\t\t</label>\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 pt-3 border-top cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="priceRange" value="" {% if not currentPrice %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text text-muted">Tous les prix</span>\n \t\t\t\t\t</label>\n \t\t\t\t</div>\n \t\t\t</div>\n \n \t\t\t{# 3. Trier par #}\n \t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t<div class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t<span>\n \t\t\t\t\t\t{% set currentSort = app.request.query.get('sort') %}\n \t\t\t\t\t\t{% if currentSort == 'bestseller' %}Meilleures ventes\n \t\t\t\t\t\t\t{% elseif currentSort == 'price_asc' %}Prix croissant\n \t\t\t\t\t\t\t{% elseif currentSort == 'price_desc' %}Prix décroissant\n \t\t\t\t\t\t\t{% elseif currentSort == 'newest' %}Nouveautés\n \t\t\t\t\t\t\t{% else %}Trier par\n \t\t\t\t\t\t{% endif %}\n \t\t\t\t\t</span>\n \t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t</span>\n \t\t\t\t</div>\n \t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 240px;">\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="sort" value="newest" {% if currentSort == 'newest' or not currentSort %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text">Nouveautés</span>\n \t\t\t\t\t</label>\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="sort" value="bestseller" {% if currentSort == 'bestseller' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text">Meilleures ventes</span>\n \t\t\t\t\t</label>\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="sort" value="price_asc" {% if currentSort == 'price_asc' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text">Prix croissant</span>\n \t\t\t\t\t</label>\n \t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-0 cursor-pointer">\n \t\t\t\t\t\t<input type="radio" name="sort" value="price_desc" {% if currentSort == 'price_desc' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t<span class="checkbox-text">Prix décroissant</span>\n \t\t\t\t\t</label>\n \t\t\t\t</div>\n \t\t\t</div>\n \n \t\t\t{# 4. Disponibilité (Pill Toggle) #}\n \t\t\t<div class="filter-item">\n \t\t\t\t{% set isAvailable = app.request.query.get('available') %}\n \t\t\t\t<label class="cursor-pointer d-flex align-items-center gap-2 m-0 filter-pill {{ isAvailable ? 'active' : '' }}">\n \t\t\t\t\t<input type="checkbox" name="available" value="1" {% if isAvailable %} checked {% endif %} class="d-none" onchange="this.parentElement.classList.toggle('active'); this.form.dispatchEvent(new Event('change', {bubbles: true, cancelable: true}));">\n \t\t\t\t\t<span>✓ En stock rapide</span>\n \t\t\t\t</label>\n \t\t\t</div>\n \t\t{% else %}\n \t\t\t{# Filters specific to Category Pages (dynamically loaded from facets) #}\n \t\t\t{% set hasShownAttributes = false %}\n \t\t\t{% for facetCode, facetData in facets %}\n \t\t\t\t{% if facetCode != 'taxons' and facetData|length > 0 %}\n \t\t\t\t\t{% set hasShownAttributes = true %}\n \t\t\t\t\t{% set transKey = 'app.ui.filter_label.' ~ facetCode|lower %}\n \t\t\t\t\t{% set translatedLabel = transKey|trans %}\n \t\t\t\t\t{% set facetLabel = facetLabels[facetCode]|default((translatedLabel != transKey) ? translatedLabel : facetCode|replace({'_': ' '})|capitalize) %}\n \n >>>>>>> Stashed changes\n \t\t\t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t\t\t<button type="button" class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill border-0" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t\t\t<span>Catégories</span>\n \t\t\t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t</button>\n \t\t\t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 240px;">\n \t\t\t\t\t\t\t{% for bucket in facets.taxons %}\n \t\t\t\t\t\t\t\t{% if bucket.count > 0 %}\n \t\t\t\t\t\t\t\t\t{% set isChecked = (app.request.query.all.taxons is defined and bucket.key in app.request.query.all.taxons) %}\n \t\t\t\t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t\t\t\t<input type="checkbox" name="taxons[]" value="{{ bucket.key }}" {% if isChecked %} checked {% endif %} class="modern-checkbox">\n \t\t\t\t\t\t\t\t\t\t<span class="checkbox-text text-capitalize">{{ bucket.key|replace({'-': ' '}) }}\n \t\t\t\t\t\t\t\t\t\t\t<span class="checkbox-count">({{ bucket.count }})</span>\n \t\t\t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t\t\t</label>\n \t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t</div>\n \t\t\t\t\t</div>\n \t\t\t\t{% endif %}\n \n \t\t\t\t{# 2. Prix #}\n \t\t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t\t<button type="button" class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill border-0" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t\t<span>Prix</span>\n \t\t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t\t</span>\n \t\t\t\t\t</button>\n \t\t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 220px;">\n \t\t\t\t\t\t{% set currentPrice = app.request.query.get('priceRange') %}\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="priceRange" value="under_150" {% if currentPrice == 'under_150' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">- de 150 €</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="priceRange" value="150_300" {% if currentPrice == '150_300' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">150 € - 300 €</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-4 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="priceRange" value="over_300" {% if currentPrice == 'over_300' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">300 € et +</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 pt-3 border-top cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="priceRange" value="" {% if not currentPrice %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text text-muted">Tous les prix</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \n \t\t\t\t{# 3. Trier par #}\n \t\t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t\t<button type="button" class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill border-0" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t\t<span>\n \t\t\t\t\t\t\t{% set currentSort = app.request.query.get('sort') %}\n \t\t\t\t\t\t\t{% if currentSort == 'bestseller' %}Meilleures ventes\n \t\t\t\t\t\t\t\t{% elseif currentSort == 'price_asc' %}Prix croissant\n \t\t\t\t\t\t\t\t{% elseif currentSort == 'price_desc' %}Prix décroissant\n \t\t\t\t\t\t\t\t{% elseif currentSort == 'newest' %}Nouveautés\n \t\t\t\t\t\t\t\t{% else %}Trier par\n \t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t</span>\n \t\t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t\t</span>\n \t\t\t\t\t</button>\n \t\t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 240px;">\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="newest" {% if currentSort == 'newest' or not currentSort %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Nouveautés</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="bestseller" {% if currentSort == 'bestseller' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Meilleures ventes</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="price_asc" {% if currentSort == 'price_asc' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Prix croissant</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-0 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="price_desc" {% if currentSort == 'price_desc' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Prix décroissant</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \n \t\t\t\t{# 4. Disponibilité (Pill Toggle) #}\n \t\t\t\t<div class="filter-item">\n \t\t\t\t\t{% set isAvailable = app.request.query.get('available') %}\n \t\t\t\t\t<label class="cursor-pointer d-flex align-items-center gap-2 m-0 filter-pill {{ isAvailable ? 'active' : '' }}">\n \t\t\t\t\t\t<input type="checkbox" name="available" value="1" {% if isAvailable %} checked {% endif %} class="d-none" onchange="this.parentElement.classList.toggle('active'); this.form.dispatchEvent(new Event('change', {bubbles: true, cancelable: true}));">\n \t\t\t\t\t\t<span>✓ En stock rapide</span>\n \t\t\t\t\t</label>\n \t\t\t\t</div>\n \t\t\t{% else %}\n \t\t\t\t{# Filters specific to Category Pages (dynamically loaded from facets) #}\n \t\t\t\t{% set hasShownAttributes = false %}\n \t\t\t\t{% for facetCode, facetData in facets %}\n \t\t\t\t\t{% if facetCode != 'taxons' and facetData|length > 0 %}\n \t\t\t\t\t\t{% set hasShownAttributes = true %}\n \t\t\t\t\t\t{% set transKey = 'app.ui.filter_label.' ~ facetCode|lower %}\n \t\t\t\t\t\t{% set translatedLabel = transKey|trans %}\n \t\t\t\t\t\t{% set facetLabel = facetLabels[facetCode]|default((translatedLabel != transKey) ? translatedLabel : facetCode|replace({'_': ' '})|capitalize) %}\n \n \t\t\t\t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t\t\t\t<button type="button" class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill border-0" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t\t\t\t<span>{{ facetLabel }}</span>\n \t\t\t\t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t</button>\n \t\t\t\t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 240px;">\n \t\t\t\t\t\t\t\t{% for bucket in facetData %}\n \t\t\t\t\t\t\t\t\t{% if bucket.count > 0 %}\n \t\t\t\t\t\t\t\t\t\t{% if 'options.' in facetCode %}\n \t\t\t\t\t\t\t\t\t\t\t{% set paramName = 'options[' ~ facetCode|replace({'options.': ''}) ~ '][]' %}\n \t\t\t\t\t\t\t\t\t\t{% elseif 'attributes.' in facetCode %}\n \t\t\t\t\t\t\t\t\t\t\t{% set paramName = 'attributes[' ~ facetCode|replace({'attributes.': ''}) ~ '][]' %}\n \t\t\t\t\t\t\t\t\t\t{% else %}\n \t\t\t\t\t\t\t\t\t\t\t{% set paramName = facetCode ~ '[]' %}\n \t\t\t\t\t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t\t\t\t\t\t{% set cleanCode = facetCode|replace({'options.': '', 'attributes.': ''}) %}\n \t\t\t\t\t\t\t\t\t\t{% set isChecked = false %}\n \t\t\t\t\t\t\t\t\t\t{% if filters.attributes[cleanCode] is defined and bucket.key in filters.attributes[cleanCode] %}\n \t\t\t\t\t\t\t\t\t\t\t{% set isChecked = true %}\n \t\t\t\t\t\t\t\t\t\t{% elseif filters.options[cleanCode] is defined and bucket.key in filters.options[cleanCode] %}\n \t\t\t\t\t\t\t\t\t\t\t{% set isChecked = true %}\n \t\t\t\t\t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t\t\t\t\t<input type="checkbox" name="{{ paramName }}" value="{{ bucket.key }}" {% if isChecked %} checked {% endif %} class="modern-checkbox">\n \t\t\t\t\t\t\t\t\t\t\t<span class="checkbox-text">{{ bucket.key }}\n \t\t\t\t\t\t\t\t\t\t\t\t<span class="checkbox-count">({{ bucket.count }})</span>\n \t\t\t\t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t\t\t\t</label>\n \t\t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t{% endif %}\n \t\t\t\t{% endfor %}\n \n \t\t\t\t{% if not hasShownAttributes %}\n \t\t\t\t\t{# Fallback if no specific attributes are attached to this category #}\n \t\t\t\t\t<div class="filter-item text-muted small">Aucun filtre spécifique défini pour cette catégorie.</div>\n \t\t\t\t{% endif %}\n \n \t\t\t\t{# 3. Trier par for Taxon pages as well #}\n \t\t\t\t<div class="filter-item custom-dropdown position-relative">\n \t\t\t\t\t<button type="button" class="dropdown-trigger cursor-pointer d-flex align-items-center gap-2 filter-pill border-0" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t\t<span>\n \t\t\t\t\t\t\t{% set currentSort = app.request.query.get('sort') %}\n \t\t\t\t\t\t\t{% if currentSort == 'bestseller' %}Meilleures ventes\n \t\t\t\t\t\t\t\t{% elseif currentSort == 'price_asc' %}Prix croissant\n \t\t\t\t\t\t\t\t{% elseif currentSort == 'price_desc' %}Prix décroissant\n \t\t\t\t\t\t\t\t{% else %}Trier par\n \t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t</span>\n \t\t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t\t</span>\n \t\t\t\t\t</button>\n \t\t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 240px;">\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="newest" {% if currentSort == 'newest' or not currentSort %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Nouveautés</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="bestseller" {% if currentSort == 'bestseller' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Meilleures ventes</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="price_asc" {% if currentSort == 'price_asc' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Prix croissant</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-0 cursor-pointer">\n \t\t\t\t\t\t\t<input type="radio" name="sort" value="price_desc" {% if currentSort == 'price_desc' %} checked {% endif %} class="modern-checkbox modern-radio">\n \t\t\t\t\t\t\t<span class="checkbox-text">Prix décroissant</span>\n \t\t\t\t\t\t</label>\n \t\t\t\t\t</div>\n \t\t\t\t</div>\n \t\t\t{% endif %}\n \t\t</div>\n \n \t</div>\n \n \t</div>\n \t{# End Left Group #}\n \n \t{# Right Group: Plus de filtres #}\n \t{% if taxon is not defined or taxon is null %}\n \t\t<div class="filter-item">\n \t\t\t<button type="button" class="btn btn-dark rounded-pill d-flex align-items-center gap-2 px-4 py-2" style="font-size: 0.85rem; font-weight: 600; letter-spacing: 0.5px;" data-bs-toggle="collapse" data-bs-target="#moreFiltersCollapse" aria-expanded="false" aria-controls="moreFiltersCollapse" id="toggle-more-filters-btn">\n \t\t\t\t<svg width="16" height="16" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">\n \t\t\t\t\t<path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"></path>\n \t\t\t\t</svg>\n \t\t\t\t<span>PLUS DE FILTRES</span>\n \t\t\t</button>\n \t\t</div>\n \t{% endif %}\n </div>\n \n {# Dropdown closing is handled by filter_controller.js (closeDropdowns action) #}\n \n {# COLLAPSIBLE ZONE POUR LES AUTRES FILTRES DYNAMIQUES (HORIZONTAL) #}\n <div class="collapse w-100" id="moreFiltersCollapse">\n \t<div class="more-filters-collapse p-4 mb-4 shadow-sm">\n \t\t<div class="d-flex flex-wrap gap-5">\n \t\t\t{% for facetCode, facetData in facets %}\n \t\t\t\t{% if facetCode != 'taxons' %}\n \n \t\t\t\t\t{% set hasOptions = false %}\n \t\t\t\t\t{% for bucket in facetData %}\n \t\t\t\t\t\t{% if bucket.count > 0 %}\n \t\t\t\t\t\t\t{% set hasOptions = true %}\n \t\t\t\t\t\t{% endif %}\n \t\t\t\t\t{% endfor %}\n \n \t\t\t\t\t{% if hasOptions %}\n \t\t\t\t\t\t{% set transKey = 'app.ui.filter_label.' ~ facetCode|lower %}\n \t\t\t\t\t\t{% set translatedLabel = transKey|trans %}\n \t\t\t\t\t\t{% set facetLabel = facetLabels[facetCode]|default((translatedLabel != transKey) ? translatedLabel : facetCode|replace({'_': ' '})|capitalize) %}\n \n \t\t\t\t\t\t<div class="filter-section custom-dropdown position-relative" style="min-width: 220px;">\n \t\t\t\t\t\t\t<h6 class="fw-bold mb-3" style="font-size: 0.8rem; color: #555;">{{ facetLabel }}</h6>\n \n \t\t\t\t\t\t\t{% if 'options.' in facetCode %}\n \t\t\t\t\t\t\t\t{% set paramName = 'options[' ~ facetCode|replace({'options.': ''}) ~ '][]' %}\n \t\t\t\t\t\t\t{% elseif 'attributes.' in facetCode %}\n \t\t\t\t\t\t\t\t{% set paramName = 'attributes[' ~ facetCode|replace({'attributes.': ''}) ~ '][]' %}\n \t\t\t\t\t\t\t{% else %}\n \t\t\t\t\t\t\t\t{% set paramName = facetCode ~ '[]' %}\n \t\t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t\t\t<button type="button" class="dropdown-trigger cursor-pointer d-flex align-items-center justify-content-between gap-2 filter-pill w-100 border-0" data-action="click->filter#toggleDropdown">\n \t\t\t\t\t\t\t\t<span>{{ facetLabel }}</span>\n \t\t\t\t\t\t\t\t<span class="arrow-icon transition-transform">\n \t\t\t\t\t\t\t\t\t<svg width="10" height="6" viewbox="0 0 10 6" fill="none"><path d="M1 1L5 5L9 1" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>\n \t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t</button>\n \t\t\t\t\t\t\t\n \t\t\t\t\t\t\t<div class="dropdown-menu-custom position-absolute mt-3 bg-white z-3" style="min-width: 240px; top: 100%; left: 0;">\n \t\t\t\t\t\t\t\t{% for bucket in facetData %}\n \t\t\t\t\t\t\t\t\t{% if bucket.count > 0 %}\n \t\t\t\t\t\t\t\t\t\t{% set cleanCode = facetCode|replace({'options.': '', 'attributes.': ''}) %}\n \t\t\t\t\t\t\t\t\t\t{% set isChecked = false %}\n \t\t\t\t\t\t\t\t\t\t{% if filters.attributes[cleanCode] is defined and bucket.key in filters.attributes[cleanCode] %}\n \t\t\t\t\t\t\t\t\t\t\t{% set isChecked = true %}\n \t\t\t\t\t\t\t\t\t\t{% elseif filters.options[cleanCode] is defined and bucket.key in filters.options[cleanCode] %}\n \t\t\t\t\t\t\t\t\t\t\t{% set isChecked = true %}\n \t\t\t\t\t\t\t\t\t\t{% endif %}\n \n \t\t\t\t\t\t\t\t\t\t<label class="checkbox-item d-flex align-items-center gap-3 mb-3 cursor-pointer">\n \t\t\t\t\t\t\t\t\t\t\t<input type="checkbox" name="{{ paramName }}" value="{{ bucket.key }}" {% if isChecked %} checked {% endif %} class="modern-checkbox">\n \t\t\t\t\t\t\t\t\t\t\t<span class="checkbox-text">{{ bucket.key }}\n \t\t\t\t\t\t\t\t\t\t\t\t<span class="checkbox-count">({{ bucket.count }})</span>\n \t\t\t\t\t\t\t\t\t\t\t</span>\n \t\t\t\t\t\t\t\t\t\t</label>\n \t\t\t\t\t\t\t\t\t{% endif %}\n \t\t\t\t\t\t\t\t{% endfor %}\n \t\t\t\t\t\t\t</div>\n \t\t\t\t\t\t</div>\n \t\t\t\t\t{% endif %}\n \t\t\t\t{% endif %}\n \t\t\t{% endfor %}\n \t\t</div>\n \n \t\t{# Optional Validation button (since it auto-submits, we can show a visual validation trigger if desired, or let auto-submit handle it) #}\n \t\t<div class="mt-4 pt-3 border-top d-flex justify-content-end">\n \n \n \t\t\t<button class="btn-circle-load-more btn-animated" data-bs-toggle="collapse" data-bs-target="#moreFiltersCollapse">\n <<<<<<< Updated upstream\n \t\t\t\t<span class="btn-icon">\n \t\t\t\t\t<svg width="8" height="8" viewbox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">\n \t\t\t\t\t\t<path d="M7.35355 4.03519C7.54882 3.83993 7.54882 3.52335 7.35355 3.32809L4.17157 0.146106C3.97631 -0.0491558 3.65973 -0.0491558 3.46447 0.146106C3.2692 0.341369 3.2692 0.657951 3.46447 0.853213L6.29289 3.68164L3.46447 6.51007C3.2692 6.70533 3.2692 7.02191 3.46447 7.21717C3.65973 7.41244 3.97631 7.41244 4.17157 7.21717L7.35355 4.03519ZM0 3.68164L4.37114e-08 4.18164L7 4.18164L7 3.68164L7 3.18164L-4.37114e-08 3.18164L0 3.68164Z" fill="black"></path>\n \t\t\t\t\t</svg>\n \t\t\t\t</span>\n =======\n \t\t\t\t\t\t\t<span class="btn-icon">\n \t\t\t\t\t\t\t\t<svg width="8" height="8" viewbox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">\n \t\t\t\t\t\t\t\t\t<path d="M7.35355 4.03519C7.54882 3.83993 7.54882 3.52335 7.35355 3.32809L4.17157 0.146106C3.97631 -0.0491558 3.65973 -0.0491558 3.46447 0.146106C3.2692 0.341369 3.2692 0.657951 3.46447 0.853213L6.29289 3.68164L3.46447 6.51007C3.2692 6.70533 3.2692 7.02191 3.46447 7.21717C3.65973 7.41244 3.97631 7.41244 4.17157 7.21717L7.35355 4.03519ZM0 3.68164L4.37114e-08 4.18164L7 4.18164L7 3.68164L7 3.18164L-4.37114e-08 3.18164L0 3.68164Z" fill="black"></path>\n \t\t\t\t\t\t\t\t</svg>\n \t\t\t\t\t\t\t</span>\n >>>>>>> Stashed changes\n \t\t\t\t<span class="text font-bold">Fermer</span>\n \t\t\t</button>\n \n \n \t\t</div>\n \t</div>\n </div>\n """ -name: "@SyliusShop/product/_filter_sidebar.html.twig" -path: "/home/forges/subdomains/preprod/templates/bundles/SyliusShopBundle/product/_filter_sidebar.html.twig" } -phpFile: "/home/forges/subdomains/preprod/vendor/twig/twig/src/Parser.php" -phpLine: 207 }
<input type="radio" name="sort" value="price_desc" {% if currentSort == 'price_desc' %} checked {% endif %} class="modern-checkbox modern-radio"><span class="checkbox-text">Prix décroissant</span></label></div></div>{% endif %}</div></div></div>
in
vendor/twig/twig/src/TokenParser/ForTokenParser.php
->
subparse
(line 47)
$stream->expect(Token::BLOCK_END_TYPE);$body = $this->parser->subparse([$this, 'decideForFork']);if ('else' == $stream->next()->getValue()) {$elseLineno = $stream->getCurrent()->getLine();$stream->expect(Token::BLOCK_END_TYPE);$else = new ForElseNode($this->parser->subparse([$this, 'decideForEnd'], true), $elseLineno);} else {$else = null;}$stream->expect(Token::BLOCK_END_TYPE);
in
vendor/twig/twig/src/Parser.php
->
parse
(line 224)
}$this->stream->next();$subparser->setParser($this);$node = $subparser->parse($token);if (!$node) {trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);} else {$node->setNodeTag($subparser->getTag());$rv[] = $node;
in
vendor/twig/twig/src/TokenParser/IfTokenParser.php
->
subparse
(line 51)
$end = false;while (!$end) {switch ($stream->next()->getValue()) {case 'else':$stream->expect(Token::BLOCK_END_TYPE);$else = $this->parser->subparse([$this, 'decideIfEnd']);break;case 'elseif':$expr = $this->parser->parseExpression();$stream->expect(Token::BLOCK_END_TYPE);
in
vendor/twig/twig/src/Parser.php
->
parse
(line 224)
}$this->stream->next();$subparser->setParser($this);$node = $subparser->parse($token);if (!$node) {trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);} else {$node->setNodeTag($subparser->getTag());$rv[] = $node;
in
vendor/twig/twig/src/TokenParser/IfTokenParser.php
->
subparse
(line 42)
{$lineno = $token->getLine();$expr = $this->parser->parseExpression();$stream = $this->parser->getStream();$stream->expect(Token::BLOCK_END_TYPE);$body = $this->parser->subparse([$this, 'decideIfFork']);$tests = [$expr, $body];$else = null;$end = false;while (!$end) {
in
vendor/twig/twig/src/Parser.php
->
parse
(line 224)
}$this->stream->next();$subparser->setParser($this);$node = $subparser->parse($token);if (!$node) {trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);} else {$node->setNodeTag($subparser->getTag());$rv[] = $node;
in
vendor/twig/twig/src/TokenParser/IfTokenParser.php
->
subparse
(line 42)
{$lineno = $token->getLine();$expr = $this->parser->parseExpression();$stream = $this->parser->getStream();$stream->expect(Token::BLOCK_END_TYPE);$body = $this->parser->subparse([$this, 'decideIfFork']);$tests = [$expr, $body];$else = null;$end = false;while (!$end) {
in
vendor/twig/twig/src/Parser.php
->
parse
(line 224)
}$this->stream->next();$subparser->setParser($this);$node = $subparser->parse($token);if (!$node) {trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);} else {$node->setNodeTag($subparser->getTag());$rv[] = $node;
in
vendor/twig/twig/src/Parser.php
->
subparse
(line 104)
$this->importedSymbols = [[]];$this->embeddedTemplates = [];$this->expressionRefs = new \WeakMap();try {$body = $this->subparse($test, $dropNeedle);if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) {$body = new EmptyNode();}} catch (SyntaxError $e) {
in
vendor/twig/twig/src/Environment.php
->
parse
(line 558)
{if (null === $this->parser) {$this->parser = new Parser($this);}return $this->parser->parse($stream);}/*** @return void*/
in
vendor/twig/twig/src/Environment.php
->
parse
(line 589)
* @throws SyntaxError When there was an error during tokenizing, parsing or compiling*/public function compileSource(Source $source): string{try {return $this->compile($this->parse($this->tokenize($source)));} catch (Error $e) {$e->setSourceContext($source);throw $e;} catch (\Exception $e) {throw new SyntaxError(\sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
in
vendor/twig/twig/src/Environment.php
->
compileSource
(line 408)
$this->cache->load($key);}if (!class_exists($cls, false)) {$source = $this->getLoader()->getSourceContext($name);$content = $this->compileSource($source);if (!isset($this->hotCache[$name])) {$this->cache->write($key, $content);$this->cache->load($key);}
in
vendor/twig/twig/src/Template.php
->
loadTemplate
(line 293)
}} else {$class = $this->env->getTemplateClass($template);}return $this->env->loadTemplate($class, $template, $index);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($this->getSourceContext());}
in
var/cache/dev/twig/07/079932b1552f012cc66db20b0ebb9973.php
->
load
(line 278)
yield "\t\t\t\t<!-- Filtres Desktop (visible sur lg et plus) --><<<<<<< Updated upstream\t\t\t\t\t<div class=\"d-none d-lg-block\"> <div class=\"filters-left w-100 d-flex gap-4 align-items-center flex-wrap sticky-filters\" data-filter-target=\"filtersContainer\">\t\t\t\t\t\t";// line 106yield from $this->load("@SyliusShop/product/_filter_sidebar.html.twig", 106)->unwrap()->yield($context);// line 107yield "\t\t\t\t\t</div>\t\t\t\t</div>\t\t\t\t<!-- Bouton Filtre Mobile/Tablette (fixed bottom) -->
in
vendor/twig/twig/src/Template.php
->
block_content
(line 446)
throw new \LogicException('A block must be a method on a \Twig\Template instance.');}if (null !== $template) {try {yield from $template->$block($context, $blocks);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($template->getSourceContext());}
in
var/cache/dev/twig/1a/1a7047910571431644acc828754f64d9.php
->
yieldBlock
(line 247)
// line 38yield "\t\t\t\t";// line 40yield from $this->unwrap()->yieldBlock('content', $context, $blocks);// line 41yield "\t\t\t\t";// line 43
in
vendor/twig/twig/src/Template.php
->
block_body
(line 446)
throw new \LogicException('A block must be a method on a \Twig\Template instance.');}if (null !== $template) {try {yield from $template->$block($context, $blocks);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($template->getSourceContext());}
in
var/cache/dev/twig/1a/1a7047910571431644acc828754f64d9.php
->
yieldBlock
(line 106)
yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("sylius_shop_cart_summary");yield "\">\t\t";// line 30yield from $this->unwrap()->yieldBlock('body', $context, $blocks);// line 50yield "\t\t";// line 51yield from $this->unwrap()->yieldBlock('javascripts', $context, $blocks);
in
vendor/twig/twig/src/Template.php
->
doDisplay
(line 402)
{$context += $this->env->getGlobals();$blocks = array_merge($this->blocks, $blocks);try {yield from $this->doDisplay($context, $blocks);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($this->getSourceContext());}
in
var/cache/dev/twig/07/079932b1552f012cc66db20b0ebb9973.php
->
yield
(line 60)
$context["prefixes"] = ["sylius_shop.product_index"];// line 21$context["products"] = ((array_key_exists("products", $context)) ? ((isset($context["products"]) || array_key_exists("products", $context) ? $context["products"] : (function () { throw new RuntimeError('Variable "products" does not exist.', 21, $this->source); })())) : (((array_key_exists("resources", $context)) ? (CoreExtension::getAttribute($this->env, $this->source, (isset($context["resources"]) || array_key_exists("resources", $context) ? $context["resources"] : (function () { throw new RuntimeError('Variable "resources" does not exist.', 21, $this->source); })()), "data", [], "any", false, false, false, 21)) : ([]))));// line 1$this->parent = $this->load("@SyliusShop/shared/layout/base.html.twig", 1);yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
in
vendor/twig/twig/src/Template.php
->
doDisplay
(line 402)
{$context += $this->env->getGlobals();$blocks = array_merge($this->blocks, $blocks);try {yield from $this->doDisplay($context, $blocks);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($this->getSourceContext());}
in
vendor/twig/twig/src/Template.php
->
yield
(line 358)
return $this->blocks;}public function display(array $context, array $blocks = []): void{foreach ($this->yield($context, $blocks) as $data) {echo $data;}}public function render(array $context): string
in
vendor/twig/twig/src/Template.php
->
display
(line 373)
ob_start();} else {ob_start(function () { return ''; });}try {$this->display($context);} catch (\Throwable $e) {while (ob_get_level() > $level) {ob_end_clean();}
in
vendor/twig/twig/src/TemplateWrapper.php
->
render
(line 51)
yield from $this->template->yieldBlock($name, $context);}public function render(array $context = []): string{return $this->template->render($context);}/*** @return void*/
in
vendor/twig/twig/src/Environment.php
->
render
(line 333)
* @throws SyntaxError When an error occurred during compilation* @throws RuntimeError When an error occurred during rendering*/public function render($name, array $context = []): string{return $this->load($name)->render($context);}/*** Displays a template.*
in
vendor/symfony/framework-bundle/Controller/AbstractController.php
->
render
(line 467)
if (null !== $block) {return $this->container->get('twig')->load($view)->renderBlock($block, $parameters);}return $this->container->get('twig')->render($view, $parameters);}private function doRender(string $view, ?string $block, array $parameters, ?Response $response, string $method): Response{$content = $this->doRenderView($view, $block, $parameters, $method);
in
vendor/symfony/framework-bundle/Controller/AbstractController.php
->
doRenderView
(line 472)
return $this->container->get('twig')->render($view, $parameters);}private function doRender(string $view, ?string $block, array $parameters, ?Response $response, string $method): Response{$content = $this->doRenderView($view, $block, $parameters, $method);$response ??= new Response();if (200 === $response->getStatusCode()) {foreach ($parameters as $v) {if ($v instanceof FormInterface && $v->isSubmitted() && !$v->isValid()) {
in
vendor/symfony/framework-bundle/Controller/AbstractController.php
->
doRender
(line 284)
* If an invalid form is found in the list of parameters, a 422 status code is returned.* Forms found in parameters are auto-cast to form views.*/protected function render(string $view, array $parameters = [], ?Response $response = null): Response{return $this->doRender($view, null, $parameters, $response, __FUNCTION__);}/*** Renders a block in a view.*
'page' => $result['page'],'total' => $result['total'],]);}return $this->render('@SyliusShop/product/index.html.twig', ['products' => $result['products'],'facets' => $result['facets'],'facetLabels' => $result['facetLabels'] ?? [],'filters' => $filters,'total' => $result['total'],
in
vendor/symfony/http-kernel/HttpKernel.php
->
indexByTaxon
(line 183)
$this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);$controller = $event->getController();$arguments = $event->getArguments();// call controller$response = $controller(...$arguments);// viewif (!$response instanceof Response) {$event = new ViewEvent($this, $request, $type, $response, $event);$this->dispatcher->dispatch($event, KernelEvents::VIEW);
in
vendor/symfony/http-kernel/HttpKernel.php
->
handleRaw
(line 76)
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());$this->requestStack->push($request);$response = null;try {return $response = $this->handleRaw($request, $type);} catch (\Throwable $e) {if ($e instanceof \Error && !$this->handleAllThrowables) {throw $e;}
in
vendor/symfony/http-kernel/Kernel.php
->
handle
(line 193)
if (!$this->handlingHttpCache) {$this->resetServices = true;}try {return $this->getHttpKernel()->handle($request, $type, $catch);} finally {--$this->requestStackSize;}}
in
vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php
->
handle
(line 35)
) {}public function run(): int{$response = $this->kernel->handle($this->request);if (Kernel::VERSION_ID >= 60400) {$response->send(false);if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in
vendor/autoload_runtime.php
->
run
(line 32)
$app = $app(...$args);exit($runtime->getRunner($app)->run());
require_once('/home/forges/subdomains/preprod/vendor/autoload_runtime.php')
in
public/index.php
(line 5)
<?phpuse App\Kernel;require_once dirname(__DIR__).'/vendor/autoload_runtime.php';return function (array $context) {return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);};
Logs
| Level | Channel | Message |
|---|---|---|
| INFO 16:21:02 | deprecation |
User Deprecated: The Liip\ImagineBundle\Templating\FilterTrait trait is deprecated since version 2.7 and will be removed in 3.0; use Twig instead. {
"exception": {}
}
|
| INFO 16:21:02 | deprecation |
User Deprecated: The Liip\ImagineBundle\Templating\FilterExtension class is deprecated since version 2.7 and will be removed in 3.0; configure "liip_imagine.twig.mode" to "lazy" instead. {
"exception": {}
}
|
| INFO 16:21:02 | doctrine |
Connecting with parameters {params} {
"params": {
"driver": "pdo_mysql",
"idle_connection_ttl": 600,
"host": "127.0.0.1",
"port": 3306,
"user": "forges",
"password": "<redacted>",
"driverOptions": [],
"defaultTableOptions": {
"collation": "utf8mb4_unicode_ci"
},
"dbname": "forges-preprod",
"charset": "utf8mb4"
}
}
|
| INFO 16:21:02 | deprecation |
User Deprecated: Method "Payum\Core\Model\DetailsAggregateInterface::getDetails()" might add "?object" as a native return type declaration in the future. Do the same in implementation "Sylius\Bundle\PayumBundle\Model\PaymentSecurityToken" now to avoid errors or add an explicit @return annotation to suppress this message. {
"exception": {}
}
|
| INFO 16:21:02 | request |
Matched route "_profiler". {
"route": "_profiler",
"route_parameters": {
"_route": "_profiler",
"_controller": "web_profiler.controller.profiler::panelAction",
"token": "f27988"
},
"request_uri": "https://forges-preprod.kwantic.dev/_profiler/f27988",
"method": "GET"
}
|
| DEBUG 16:21:02 | security |
Checking for authenticator support. {
"firewall_name": "shop",
"authenticators": 3
}
|
| DEBUG 16:21:02 | security |
Checking support on authenticator. {
"firewall_name": "shop",
"authenticator": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
}
|
| DEBUG 16:21:02 | security |
Authenticator does not support the request. {
"firewall_name": "shop",
"authenticator": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
}
|
| DEBUG 16:21:02 | security |
Checking support on authenticator. {
"firewall_name": "shop",
"authenticator": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
}
|
| DEBUG 16:21:02 | security |
Authenticator does not support the request. {
"firewall_name": "shop",
"authenticator": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
}
|
| DEBUG 16:21:02 | security |
Checking support on authenticator. {
"firewall_name": "shop",
"authenticator": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
}
|
| DEBUG 16:21:02 | security |
Authenticator does not support the request. {
"firewall_name": "shop",
"authenticator": "Symfony\\Component\\Security\\Http\\Authenticator\\Debug\\TraceableAuthenticator"
}
|
| DEBUG 16:21:02 | doctrine |
Executing statement: SELECT t0.code AS code_1, t0.name AS name_2, t0.color AS color_3, t0.description AS description_4, t0.enabled AS enabled_5, t0.hostname AS hostname_6, t0.created_at AS created_at_7, t0.updated_at AS updated_at_8, t0.id AS id_9, t0.theme_name AS theme_name_10, t0.tax_calculation_strategy AS tax_calculation_strategy_11, t0.contact_email AS contact_email_12, t0.contact_phone_number AS contact_phone_number_13, t0.skipping_shipping_step_allowed AS skipping_shipping_step_allowed_14, t0.skipping_payment_step_allowed AS skipping_payment_step_allowed_15, t0.account_verification_required AS account_verification_required_16, t0.shipping_address_in_checkout_required AS shipping_address_in_checkout_required_17, t0.default_locale_id AS default_locale_id_18, t19.code AS code_20, t19.created_at AS created_at_21, t19.updated_at AS updated_at_22, t19.id AS id_23, t0.base_currency_id AS base_currency_id_24, t25.code AS code_26, t25.created_at AS created_at_27, t25.updated_at AS updated_at_28, t25.id AS id_29, t0.default_tax_zone_id AS default_tax_zone_id_30, t0.menu_taxon_id AS menu_taxon_id_31, t0.shop_billing_data_id AS shop_billing_data_id_32, t0.channel_price_history_config_id AS channel_price_history_config_id_33 FROM sylius_channel t0 INNER JOIN sylius_locale t19 ON t0.default_locale_id = t19.id INNER JOIN sylius_currency t25 ON t0.base_currency_id = t25.id WHERE t0.hostname = ? AND t0.enabled = ? ORDER BY t0.id ASC LIMIT 1 (parameters: {params}, types: {types}) {
"sql": "SELECT t0.code AS code_1, t0.name AS name_2, t0.color AS color_3, t0.description AS description_4, t0.enabled AS enabled_5, t0.hostname AS hostname_6, t0.created_at AS created_at_7, t0.updated_at AS updated_at_8, t0.id AS id_9, t0.theme_name AS theme_name_10, t0.tax_calculation_strategy AS tax_calculation_strategy_11, t0.contact_email AS contact_email_12, t0.contact_phone_number AS contact_phone_number_13, t0.skipping_shipping_step_allowed AS skipping_shipping_step_allowed_14, t0.skipping_payment_step_allowed AS skipping_payment_step_allowed_15, t0.account_verification_required AS account_verification_required_16, t0.shipping_address_in_checkout_required AS shipping_address_in_checkout_required_17, t0.default_locale_id AS default_locale_id_18, t19.code AS code_20, t19.created_at AS created_at_21, t19.updated_at AS updated_at_22, t19.id AS id_23, t0.base_currency_id AS base_currency_id_24, t25.code AS code_26, t25.created_at AS created_at_27, t25.updated_at AS updated_at_28, t25.id AS id_29, t0.default_tax_zone_id AS default_tax_zone_id_30, t0.menu_taxon_id AS menu_taxon_id_31, t0.shop_billing_data_id AS shop_billing_data_id_32, t0.channel_price_history_config_id AS channel_price_history_config_id_33 FROM sylius_channel t0 INNER JOIN sylius_locale t19 ON t0.default_locale_id = t19.id INNER JOIN sylius_currency t25 ON t0.base_currency_id = t25.id WHERE t0.hostname = ? AND t0.enabled = ? ORDER BY t0.id ASC LIMIT 1",
"params": {
"1": "forges-preprod.kwantic.dev",
"2": 1
},
"types": {
"1": 2,
"2": 5
}
}
|
| DEBUG 16:21:02 | doctrine |
Executing statement: SELECT t0.code AS code_1, t0.name AS name_2, t0.color AS color_3, t0.description AS description_4, t0.enabled AS enabled_5, t0.hostname AS hostname_6, t0.created_at AS created_at_7, t0.updated_at AS updated_at_8, t0.id AS id_9, t0.theme_name AS theme_name_10, t0.tax_calculation_strategy AS tax_calculation_strategy_11, t0.contact_email AS contact_email_12, t0.contact_phone_number AS contact_phone_number_13, t0.skipping_shipping_step_allowed AS skipping_shipping_step_allowed_14, t0.skipping_payment_step_allowed AS skipping_payment_step_allowed_15, t0.account_verification_required AS account_verification_required_16, t0.shipping_address_in_checkout_required AS shipping_address_in_checkout_required_17, t0.default_locale_id AS default_locale_id_18, t19.code AS code_20, t19.created_at AS created_at_21, t19.updated_at AS updated_at_22, t19.id AS id_23, t0.base_currency_id AS base_currency_id_24, t25.code AS code_26, t25.created_at AS created_at_27, t25.updated_at AS updated_at_28, t25.id AS id_29, t0.default_tax_zone_id AS default_tax_zone_id_30, t0.menu_taxon_id AS menu_taxon_id_31, t0.shop_billing_data_id AS shop_billing_data_id_32, t0.channel_price_history_config_id AS channel_price_history_config_id_33 FROM sylius_channel t0 INNER JOIN sylius_locale t19 ON t0.default_locale_id = t19.id INNER JOIN sylius_currency t25 ON t0.base_currency_id = t25.id WHERE t0.code = ? LIMIT 1 (parameters: {params}, types: {types}) {
"sql": "SELECT t0.code AS code_1, t0.name AS name_2, t0.color AS color_3, t0.description AS description_4, t0.enabled AS enabled_5, t0.hostname AS hostname_6, t0.created_at AS created_at_7, t0.updated_at AS updated_at_8, t0.id AS id_9, t0.theme_name AS theme_name_10, t0.tax_calculation_strategy AS tax_calculation_strategy_11, t0.contact_email AS contact_email_12, t0.contact_phone_number AS contact_phone_number_13, t0.skipping_shipping_step_allowed AS skipping_shipping_step_allowed_14, t0.skipping_payment_step_allowed AS skipping_payment_step_allowed_15, t0.account_verification_required AS account_verification_required_16, t0.shipping_address_in_checkout_required AS shipping_address_in_checkout_required_17, t0.default_locale_id AS default_locale_id_18, t19.code AS code_20, t19.created_at AS created_at_21, t19.updated_at AS updated_at_22, t19.id AS id_23, t0.base_currency_id AS base_currency_id_24, t25.code AS code_26, t25.created_at AS created_at_27, t25.updated_at AS updated_at_28, t25.id AS id_29, t0.default_tax_zone_id AS default_tax_zone_id_30, t0.menu_taxon_id AS menu_taxon_id_31, t0.shop_billing_data_id AS shop_billing_data_id_32, t0.channel_price_history_config_id AS channel_price_history_config_id_33 FROM sylius_channel t0 INNER JOIN sylius_locale t19 ON t0.default_locale_id = t19.id INNER JOIN sylius_currency t25 ON t0.base_currency_id = t25.id WHERE t0.code = ? LIMIT 1",
"params": {
"1": "WEB-EU"
},
"types": {
"1": 2
}
}
|
| DEBUG 16:21:02 | doctrine |
Executing statement: SELECT t0.code AS code_1, t0.created_at AS created_at_2, t0.updated_at AS updated_at_3, t0.id AS id_4 FROM sylius_locale t0 INNER JOIN sylius_channel_locales ON t0.id = sylius_channel_locales.locale_id WHERE sylius_channel_locales.channel_id = ? (parameters: {params}, types: {types}) {
"sql": "SELECT t0.code AS code_1, t0.created_at AS created_at_2, t0.updated_at AS updated_at_3, t0.id AS id_4 FROM sylius_locale t0 INNER JOIN sylius_channel_locales ON t0.id = sylius_channel_locales.locale_id WHERE sylius_channel_locales.channel_id = ?",
"params": {
"1": 1
},
"types": {
"1": 1
}
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener::configure"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Bundle\ResourceBundle\Storage\CookieStorage::onKernelRequest". {
"event": "kernel.request",
"listener": "Sylius\\Bundle\\ResourceBundle\\Storage\\CookieStorage::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\ValidateRequestListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\ValidateRequestListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Bridge\Doctrine\Middleware\IdleConnection\Listener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Bridge\\Doctrine\\Middleware\\IdleConnection\\Listener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\SessionListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\SessionListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::setDefaultLocale". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::setDefaultLocale"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Bundle\ApiBundle\EventSubscriber\KernelRequestEventSubscriber::validateApi". {
"event": "kernel.request",
"listener": "Sylius\\Bundle\\ApiBundle\\EventSubscriber\\KernelRequestEventSubscriber::validateApi"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\RouterListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\RouterListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Resource\Symfony\EventListener\AddFormatListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Sylius\\Resource\\Symfony\\EventListener\\AddFormatListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "ApiPlatform\Symfony\EventListener\AddFormatListener::onKernelRequest". {
"event": "kernel.request",
"listener": "ApiPlatform\\Symfony\\EventListener\\AddFormatListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Component\HttpKernel\EventListener\LocaleListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Bundle\ShopBundle\EventListener\NonChannelLocaleListener::restrictRequestLocale". {
"event": "kernel.request",
"listener": "Sylius\\Bundle\\ShopBundle\\EventListener\\NonChannelLocaleListener::restrictRequestLocale"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "FOS\RestBundle\EventListener\BodyListener::onKernelRequest". {
"event": "kernel.request",
"listener": "FOS\\RestBundle\\EventListener\\BodyListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::configureLogoutUrlGenerator". {
"event": "kernel.request",
"listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::configureLogoutUrlGenerator"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\Bundle\SecurityBundle\Debug\TraceableFirewallListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\Bundle\\SecurityBundle\\Debug\\TraceableFirewallListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Bundle\LocaleBundle\Listener\RequestLocaleSetter::onKernelRequest". {
"event": "kernel.request",
"listener": "Sylius\\Bundle\\LocaleBundle\\Listener\\RequestLocaleSetter::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "ApiPlatform\Symfony\EventListener\ReadListener::onKernelRequest". {
"event": "kernel.request",
"listener": "ApiPlatform\\Symfony\\EventListener\\ReadListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Bundle\CoreBundle\EventListener\LocaleAwareListener::onKernelRequest". {
"event": "kernel.request",
"listener": "Sylius\\Bundle\\CoreBundle\\EventListener\\LocaleAwareListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "ApiPlatform\Symfony\EventListener\DeserializeListener::onKernelRequest". {
"event": "kernel.request",
"listener": "ApiPlatform\\Symfony\\EventListener\\DeserializeListener::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Bundle\AdminBundle\EventListener\AdminFilterSubscriber::onKernelRequest". {
"event": "kernel.request",
"listener": "Sylius\\Bundle\\AdminBundle\\EventListener\\AdminFilterSubscriber::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Sylius\Bundle\CoreBundle\Checkout\CheckoutResolver::onKernelRequest". {
"event": "kernel.request",
"listener": "Sylius\\Bundle\\CoreBundle\\Checkout\\CheckoutResolver::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.request" to listener "Symfony\UX\LiveComponent\EventListener\LiveComponentSubscriber::onKernelRequest". {
"event": "kernel.request",
"listener": "Symfony\\UX\\LiveComponent\\EventListener\\LiveComponentSubscriber::onKernelRequest"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller" to listener "Symfony\UX\LiveComponent\EventListener\LiveComponentSubscriber::onKernelController". {
"event": "kernel.controller",
"listener": "Symfony\\UX\\LiveComponent\\EventListener\\LiveComponentSubscriber::onKernelController"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller" to listener "Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector::onKernelController". {
"event": "kernel.controller",
"listener": "Symfony\\Bundle\\FrameworkBundle\\DataCollector\\RouterDataCollector::onKernelController"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller" to listener "Symfony\Component\HttpKernel\DataCollector\RequestDataCollector::onKernelController". {
"event": "kernel.controller",
"listener": "Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector::onKernelController"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\IsSignatureValidAttributeListener::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\IsSignatureValidAttributeListener::onKernelControllerArguments"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsCsrfTokenValidAttributeListener::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsCsrfTokenValidAttributeListener::onKernelControllerArguments"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\Security\Http\EventListener\IsGrantedAttributeListener::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\Security\\Http\\EventListener\\IsGrantedAttributeListener::onKernelControllerArguments"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller_arguments" to listener "Symfony\Component\HttpKernel\EventListener\CacheAttributeListener::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Symfony\\Component\\HttpKernel\\EventListener\\CacheAttributeListener::onKernelControllerArguments"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller_arguments" to listener "ContainerRjvihVP\RequestPayloadValueResolverGhost01ca9cc::onKernelControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "ContainerRjvihVP\\RequestPayloadValueResolverGhost01ca9cc::onKernelControllerArguments"
}
|
| DEBUG 16:21:02 | event |
Notified event "kernel.controller_arguments" to listener "Sylius\Bundle\CoreBundle\EventListener\CircularDependencyBreakingErrorListener::onControllerArguments". {
"event": "kernel.controller_arguments",
"listener": "Sylius\\Bundle\\CoreBundle\\EventListener\\CircularDependencyBreakingErrorListener::onControllerArguments"
}
|
Stack Trace
|
SyntaxError
|
|---|
Twig\Error\SyntaxError:
Unexpected "endif" tag (expecting closing tag for the "for" tag defined near line 364) in "@SyliusShop/product/_filter_sidebar.html.twig" at line 451.
at templates/bundles/SyliusShopBundle/product/_filter_sidebar.html.twig:451
at Twig\Parser->subparse()
(vendor/twig/twig/src/TokenParser/ForTokenParser.php:47)
at Twig\TokenParser\ForTokenParser->parse()
(vendor/twig/twig/src/Parser.php:224)
at Twig\Parser->subparse()
(vendor/twig/twig/src/TokenParser/IfTokenParser.php:51)
at Twig\TokenParser\IfTokenParser->parse()
(vendor/twig/twig/src/Parser.php:224)
at Twig\Parser->subparse()
(vendor/twig/twig/src/TokenParser/IfTokenParser.php:42)
at Twig\TokenParser\IfTokenParser->parse()
(vendor/twig/twig/src/Parser.php:224)
at Twig\Parser->subparse()
(vendor/twig/twig/src/TokenParser/IfTokenParser.php:42)
at Twig\TokenParser\IfTokenParser->parse()
(vendor/twig/twig/src/Parser.php:224)
at Twig\Parser->subparse()
(vendor/twig/twig/src/Parser.php:104)
at Twig\Parser->parse()
(vendor/twig/twig/src/Environment.php:558)
at Twig\Environment->parse()
(vendor/twig/twig/src/Environment.php:589)
at Twig\Environment->compileSource()
(vendor/twig/twig/src/Environment.php:408)
at Twig\Environment->loadTemplate()
(vendor/twig/twig/src/Template.php:293)
at Twig\Template->load()
(var/cache/dev/twig/07/079932b1552f012cc66db20b0ebb9973.php:278)
at __TwigTemplate_9f202b0c90216d9df8da4b6e6d780615->block_content()
(vendor/twig/twig/src/Template.php:446)
at Twig\Template->yieldBlock()
(var/cache/dev/twig/1a/1a7047910571431644acc828754f64d9.php:247)
at __TwigTemplate_2155ccd76b8c87b2c2957963acf1d48c->block_body()
(vendor/twig/twig/src/Template.php:446)
at Twig\Template->yieldBlock()
(var/cache/dev/twig/1a/1a7047910571431644acc828754f64d9.php:106)
at __TwigTemplate_2155ccd76b8c87b2c2957963acf1d48c->doDisplay()
(vendor/twig/twig/src/Template.php:402)
at Twig\Template->yield()
(var/cache/dev/twig/07/079932b1552f012cc66db20b0ebb9973.php:60)
at __TwigTemplate_9f202b0c90216d9df8da4b6e6d780615->doDisplay()
(vendor/twig/twig/src/Template.php:402)
at Twig\Template->yield()
(vendor/twig/twig/src/Template.php:358)
at Twig\Template->display()
(vendor/twig/twig/src/Template.php:373)
at Twig\Template->render()
(vendor/twig/twig/src/TemplateWrapper.php:51)
at Twig\TemplateWrapper->render()
(vendor/twig/twig/src/Environment.php:333)
at Twig\Environment->render()
(vendor/symfony/framework-bundle/Controller/AbstractController.php:467)
at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRenderView()
(vendor/symfony/framework-bundle/Controller/AbstractController.php:472)
at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRender()
(vendor/symfony/framework-bundle/Controller/AbstractController.php:284)
at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->render()
(src/Controller/ProductController.php:288)
at App\Controller\ProductController->indexByTaxon()
(vendor/symfony/http-kernel/HttpKernel.php:183)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
(vendor/symfony/http-kernel/HttpKernel.php:76)
at Symfony\Component\HttpKernel\HttpKernel->handle()
(vendor/symfony/http-kernel/Kernel.php:193)
at Symfony\Component\HttpKernel\Kernel->handle()
(vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
(vendor/autoload_runtime.php:32)
at require_once('/home/forges/subdomains/preprod/vendor/autoload_runtime.php')
(public/index.php:5)
|