LaravelでFormの入力データから改行が消える件

はじめに
Laravelで、Formから入力したデータを受け取った時に奇妙な動きをしていた。
テキストエリアで、文頭や文末に入れた改行が消えてしまう。
入力値そのままにDBへ入れようとしていた時に発見。
原因の調査と、対策についてをまとめておく。
原因
まあ、ちゃんとドキュメントに記述がありました。
入力のトリムと正規化
リクエストに応じてすべての受信文字列フィールドを自動的にトリミングし、空の文字列フィールドをnullに変換します。
なるほど。
対策
A. 対象外の項目を指定する
\App\Http\Middleware\TrimStrings::classの中に、$except という変数がある。
この中に、トリミングしたくない入力枠のnameを記入する。
B. ミドルウェアを無効にする
すべての入力内容で、トリミングしないようにしてしまう方法。
laravel/app/Http/Kernel.php にある、\App\Http\Middleware\TrimStrings::classをコメントアウトしてしまう。
※空の時にnullになるのが困る場合は、\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::classも。
2022-08-22 09:00:00
