feat: selectable country for custom destinations

This commit is contained in:
Björn Fromme
2024-05-18 15:58:02 +02:00
parent 1908e00dd8
commit ea3f2347e8
3 changed files with 51 additions and 18 deletions
+11
View File
@@ -5,6 +5,7 @@ namespace App\Form;
use App\BusProNet\DataProvider\HotelDataProvider;
use App\Model\DestinationDto;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
@@ -37,6 +38,16 @@ class DestinationType extends AbstractType
'allow_add' => true,
'allow_delete' => true,
])
->add('country', ChoiceType::class, [
'label' => 'Land',
'choices' => [
'Österreich' => 'a',
'Schweiz' => 'ch',
'Frankreich' => 'f',
'Italien' => 'i',
'Deutschland' => 'd',
],
])
->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$form = $event->getForm();
$data = $event->getData();
+15
View File
@@ -10,6 +10,9 @@ class DestinationDto
#[Assert\NotBlank(message: 'Bitte angeben')]
private ?string $product = null;
#[Assert\Choice(choices: ['a', 'ch', 'd', 'f', 'i'], message: 'Ungültige Auswahl')]
private ?string $country = null;
#[Assert\NotNull(message: 'Bitte das Beginndatum angeben')]
private ?\DateTimeImmutable $dateFrom = null;
@@ -52,6 +55,18 @@ class DestinationDto
return $this;
}
public function getCountry(): ?string
{
return $this->country;
}
public function setCountry(?string $country): static
{
$this->country = $country;
return $this;
}
public function getDateFrom(): ?\DateTimeImmutable
{
return $this->dateFrom;
@@ -12,24 +12,31 @@
{{ form_start(form) }}
<div class="flex flex-col space-y-4 pb-8">
{{ form_row(form.product) }}
{{ form_row(form.dateFrom) }}
{{ form_row(form.dateTo) }}
{{ form_row(form.hotelBusProId) }}
<div {{ stimulus_controller('form-collection', { 'prototype': _self.collectionRow(form.pickups.vars.prototype)|json_encode }) }}>
<h4 class="font-bold pb-2">
Buszustiege
</h4>
<div {{ stimulus_target('form-collection', 'fields')}} class="flex flex-col space-y-4 mb-4">
{% do form.pickups.setRendered %}
{%- for pickup in form.pickups -%}{{- _self.collectionRow(pickup) -}}{%- endfor -%}
</div>
<div class="flex justify-end">
<button type="button"
{{ stimulus_action('form-collection', 'addItem') }}
title="Zustieg hinzufügen">
{{ icon('plus', 'w-4 h-4 pointer-events-none') }}
</button>
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
{{ form_row(form.product) }}
{{ form_row(form.hotelBusProId) }}
</div>
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
{{ form_row(form.dateFrom) }}
{{ form_row(form.dateTo) }}
</div>
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
{{ form_row(form.country) }}
<div {{ stimulus_controller('form-collection', { 'prototype': _self.collectionRow(form.pickups.vars.prototype)|json_encode }) }}>
<h4 class="font-bold pb-2">
Buszustiege
</h4>
<div {{ stimulus_target('form-collection', 'fields')}} class="flex flex-col space-y-4 mb-4">
{% do form.pickups.setRendered %}
{%- for pickup in form.pickups -%}{{- _self.collectionRow(pickup) -}}{%- endfor -%}
</div>
<div class="flex justify-end">
<button type="button"
{{ stimulus_action('form-collection', 'addItem') }}
title="Zustieg hinzufügen">
{{ icon('plus', 'w-4 h-4 pointer-events-none') }}
</button>
</div>
</div>
</div>
</div>