Lista rozwijana na formularzu - przekazanie wartości do widoku.

0

Witam.

Mam w formularzu Symfony listę wyboru określającą zakres wieku.
Stworzyłem do tego typ:

class AgeRangeType extends AbstractType
{
    const AGE_TYPE_YOUNG = 0;
    const AGE_TYPE_MIDDLE = 1;
    const AGE_TYPE_OLD = 2;

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'choices' => [
                '18-25' => self::AGE_TYPE_YOUNG,
                '26-50' => self::RESPONSE_TYPE_MAIL,
                '51-...' => self::AGE_TYPE_OLD
            ]
        ]);
    }

    public function getParent(): string
    {
        return ChoiceType::class;
    }
}

I użyłem go przy budowaniu formularza:

$builder
            ->add('name')
            ->add('age', AgeRangeType::class)

Formularz poprawnie zwraca mi wartość od 0 do 2.

Teraz chciałbym wykorzystac zwrócone z formularza wartości do wyświetlenia strony "powitanej".
I tu pojawia się problem:
nie mam pomysłu jak w twig'u zrobić warunek, żeby w zależności od wybranego wieku pokazywało się inne powitanie.
W kontrolerze pobieram dane z formularza i przekazuje je do widoku:

 $personData = $form->getData();

return $this->render('main/greetingTemplate.html.twig', [
  'data' => $personData
]);

I teraz w widoku w zależności od wartości data.age chcę wyświetlić "Cześć" lub "Dzień dobry".
Mógłbym to zrobić "na sztywno":

{% if data.age == 0 %}
    <h1>CZEŚĆ</h1>
{% else %}
    <h1>DZIEŃ DOBRY</h1>
{% endif %}

Jednak wydaje mi się to nieeleganckie.
Zastanawiam się czy jest sposób aby warunek zapisać to jakoś analogicznie jak w php:

{% if data.age == AgeRangeType::AGE_TYPE_YOUNG %}

?

Z góry dziękuję za pomoc.

0

Możesz zawsze stworzyć funkcje który buduje ci tekst na podstawie wieku w samym kodzie php. Później tą wartość przekazujesz do funkcji render()

0

Ja bym stworzyl cos w rodzaju aliasu w pliku konfiguracyjnym i potem uzywal warunku tak jak ty chcesz
cos w stylu

$services->set(AgeRangeType::class)
        ->public();

https://symfony.com/doc/current/service_container/alias_private.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1