{% extends 'layout_booking.html.twig' %} {% block title %}Schritt 2: Personen & Leistungen{% endblock %} {% block background %}bg-outer bg-outer--summer{% endblock %} {% block content %} {% form_theme form 'booking/_form_theme.html.twig' %} {{ form_start(form, { 'attr': { 'class': 'flex-1 flex flex-col min-h-0', } }) }} {# Pagination - mobile only (above summary) #}
{% include 'groups/booking/_pagination.html.twig' with { 'current_step': 2 } %}
{# Sidebar summary #} {% block accommodation_summary %}
{% include 'groups/booking/_summary.html.twig' with { 'dto': dto, 'ctx': ctx } %}
{% endblock %} {# Main form #} {% block accommodation_form %}
{% include '_partials/_flashes.html.twig' %} {# Pagination - desktop only (fixed above scrollable content) #}
{# Validation errors #} {% from '_partials/_validation_errors.html.twig' import validation_alert %} {{ validation_alert(form) }} {% if dto.isInquiry %} {% include '_partials/_alert.html.twig' with { level: 'warning', title: 'Diese Buchung wird als unverbindliche Anfrage behandelt', messages: dto.inquiryReasons } %} {% endif %} {# Pax counts #}

Personenanzahl und gewünschte Leistungen

{{ form_row(form.paxCount) }} {{ form_row(form.minorsCount) }} {{ form_row(form.childrenCount) }}
{# Board services — rendered manually so price is formatted in Twig #} {% do form.selectedBoardServiceId.setRendered %} {% if ctx.boardServices is not empty %}
Verpflegungsleistungen {% for service in ctx.boardServices %} {% endfor %}
{% if service.description %}
{% endif %}
{{ (service.price / 100)|format_currency(ctx.accommodation.currency) }}
pro Person und Nacht
{% endif %} {# Additional services — rendered manually to support checkbox/radio mix #} {% do form.selectedAdditionalServiceIds.setRendered %} {% set selectedAdditionalServiceBaseName = form.selectedAdditionalServiceIds.vars.full_name|replace({'[]': ''}) %} {% if ctx.ungroupedAdditionalServices is not empty or ctx.groupedAdditionalServices is not empty %} {# Ungrouped → checkboxes #} {% if ctx.ungroupedAdditionalServices is not empty %}
Optionale Zusatzleistungen {% for service in ctx.ungroupedAdditionalServices %} {% endfor %}
{% if service.description %}
{% endif %}
{{ (service.price / 100)|format_currency(ctx.accommodation.currency) }}
{{ service.type.label | trans }}
{% endif %} {# Grouped → radio buttons per group, one fieldset per group #} {% for groupName, services in ctx.groupedAdditionalServices %}
{{ groupName }} {% for service in services %} {% endfor %}
{% if service.description %}
{% endif %}
{{ (service.price / 100)|format_currency(ctx.accommodation.currency) }}
{{ service.type.label | trans }}
{% endfor %} {% endif %}
{% endblock %}
Zurück
{{ form_rest(form) }} {{ form_end(form) }} {% endblock %}