Bonjour,

J'ai une entrée de mon formulaire de type Textarea qui n'affiche pas les saut à la ligne.

RegisterType.php

            ->add('description', TextareaType::class, [
                'label' => 'Un petit mot sur vous:',
            ])

J'ai essayé de rajouté 'trim' => true mais rien n'a changé

showOne.html.twig

    <p>{{ user.description }}</p>

Hors Symfony j'avais déjà gérer cela grâce à une fonction PHP:

trim(preg_replace('/\s\s+/', '<br>', $descr))

Mais ici elle ne fonctionne pas. Elle m'affiche simplement <br> et ne l'execute pas (sans doute lié à Symfony pour empêcher les failles XSS)

Je souhaiterais que l'affichage gère bien le saut à la ligne.
Je ne sais pas si c'est dans mon formType, dans mon controller ou dans ma view que je dois gérer ça

SI vous avez une idée je suis prenneur ;)

Joyeuse Pâques !

3 réponses


S2LF
Auteur
Réponse acceptée

Hello !

En effet cela fonctionne cumulé à trim()

On remplace les saut à la ligne par un <br>

$newDescr = trim(preg_replace('/\s\s+/', '<br>', $descr));

Raw permettra l'interprétation du <br> en tant que html.
{{ user.description | raw }}

mais laisse apparaître un <br> dans le textarea en question lors de l'édition, ce qui n'est pas très jolie.

Mais cela m'a lancé dans la bonne direction car j'ai trouvé l'idéal !!
{{ user.description | nl2br }}

Twig mettra un <br> lui-même dès qu'il y a un saut de ligne !
https://twig.symfony.com/doc/2.x/filters/nl2br.html

Merci pour ta réponse :D

Bonjour, dans ton fichier twig , essaye de modifier <p>{{ user.description }}</p> par <p>{{ user.description | raw }}</p>

Bonjour,

Je suis sous symfony 5.2 quand j'utilise TextAreaType si je veux garder les sauts de ligne je met à True et en suite lors de l'affichage avec twig j'utilise nl2br : <p>{{ user.description | nl2br }}</p>