Bonjour à tous,
Je débute en POO et surtout avec Laravel et je bloque sur un problème de taille. Je vais essayer d'être succin.
J'ai un formulaire avec une quinzaine de champs et plusieurs "textarea". Lorsque j'enregistre les informations dans ma base de donnée, Eloquent ne conserve pas les retours chariots des champs "textarea".
J'ai trouvé une fonction : "{!! nl2br(e($xxx)) !!}". Je ne sais pas du tout où placer cette fonction pour espérer le résultat souhaité (côté vue, vôté contrôleur ???)...

J'ai essayé plusieurs choses sans succès. Je rencontre des erreurs de toutes sortes alors que mon code initial fonctionne...

Voici le code de la fonction de mon controleur :
"``
public function ajouter_information(Request $request)
{

    M_Information::create($request->all());
   return back()->with('success','Information ajoutée dans la base de donnée !');
   }

``"

1 réponse


En théorie, Eloquent garde bien les retours à la ligne, peu importe le type de colonne textuelle que tu utilises avec MySQL.

La solution que tu as trouvé est la bonne : dans ta vue Blade, tu peux utiliser nl2br().

Afin que l'effet de nl2br() puisse être utilisé dans tes composants Vue, tu pourrais simplement modifier ton attribut (admettons qu'il s'appelle content) dans ton modèle. Ça donnerait :

protected function content(): Attribute
{
    return Attribute::make(
        get: fn ($value) => nl2br($value),
    );
}

La doc officielle pour cette fonctionnalité : https://laravel.com/docs/9.x/eloquent-mutators#defining-an-accessor

— Benjamin de Larabiz