Bonjour,

Je teste la création de form theme custom dans la même page twig avec le mot clé _self comme on peut le voir dans la doc: Form theming custom sur la même page Twig.

Voilà mon code:

Controller/WelcomeController

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
class WelcomeController extends AbstractController
{
    #[Route('/welcome/form-user-dto-bis', name: 'welcome_form_user_dto_bis')]
    public function welcomeFormUserDtoBis(Request $request): Response
    {
        $userBis = new UserDTOBis();
 
        $form = $this->createFormBuilder($userBis)
            ->add('firstName', TextType::class)
            ->add('lastName', TextType::class)
            ->add('age', IntegerType::class)
            ->add('sportsman', ChoiceType::class, [
                'choices' => [
                    'yes' => true,
                    'no' => false,
                ]
            ])
            ->add('dateOfBirth', BirthdayType::class)
            ->add('submit', SubmitType::class, [
                'label' => 'Save'
            ])
            ->getForm();
 
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            dd($userBis);
 
            return $this->redirectToRoute(
                'welcome_form_user_dto_bis_redirect', 
                ['profile' => 'Very great sportsman'], 
                Response::HTTP_MOVED_PERMANENTLY
            );
        }
 
        return $this->render('welcome/welcome_form_user_dto_bis.html.twig', [
            'form' => $form
        ]);
    }
}
Model/UserDTOBis:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
class UserDTOBis
{
    #[Assert\NotBlank()]
    public string $firstName;
 
    #[Assert\NotBlank()]
    public string $lastName;
 
    public int $age;
 
    public bool $sportsman;
 
    #[Assert\NotBlank()]
    #[Assert\Type(\DateTimeInterface::class)]
    public \DateTimeInterface $dateOfBirth;
}
templates/welcome_form_user_dto_bis.html.twig

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
{% extends 'base.html.twig' %}
 
{% form_theme form _self %}
 
{% block text_label %}
    <div class="textegras">
 
    </div>
{% endblock %}
 
{% block content %}
<p>Page du form:</p>
<br>
<br>
{{ form_start(form) }}
 
{{ form_end(form) }}
{% endblock %}
Mon CSS:

public/css/blog.css

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
p {
    color: blue;
}
 
.textegras {
    font-weight: bold;
    background-color: brown;
    color: red;
}
 
.entiers {
    background-color: aqua;
    color: green;
}
L'idée du form theme custom est d'appliquer un thème personnalisé qui est défini directement dans le template. Comme on peut le voir dans le template, mon form theme custom est:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
{% block text_label %}
    <div class="textegras">
 
    </div>
{% endblock %}
C'est à dire que tous les labels qui sont de type text dans le form doivent respecter la class CSS textegras. Mais cela ne fonctionne pas. A mon avis, je dois ajouter un élément dans le div <div class="textegras"> mais je ne vois pas quoi mettre étant donné qu'on doit prendre en compte firstName et aussi lastName.

Comment résoudre cela s'il vous plaît?

Je vous remercie par avance,