Closed1

Laravelはリクエストの空文字をnullにしちゃう

白湯白湯

Formで何も入力していない項目がnullで飛んできて、FormRequestでエラーになる現象が起きた。

調べたところによると、Laravel5.4から導入された、App\Http\Middleware\TrimStringsApp\Http\Middleware\ConvertEmptyStringsToNullミドルウェアが空文字をnullに変換してくれているらしい。

HTTP Requests

HTTPリクエスト 9.x

無効化するにはKernel.phpの該当行をコメントアウトすればいいらしいけど、アプリケーション全体に影響が出てしまうのも嫌なので、FormRequestのルールにnullableを追加、Controllerでnullだった場合空文字を代入するように変更した。

FormRequest.php
public function rules(): array
{
    return [
-        'note' => ['string'],
+        'note' => ['nullable', 'string'],
    ];
}
Controller.php
- $note = $request->validated('note');
+ $note = $request->validated('note') ?? '';
このスクラップは2022/07/18にクローズされました