Closed1
Laravelはリクエストの空文字をnullにしちゃう
Formで何も入力していない項目がnullで飛んできて、FormRequestでエラーになる現象が起きた。
調べたところによると、Laravel5.4から導入された、App\Http\Middleware\TrimStrings
とApp\Http\Middleware\ConvertEmptyStringsToNull
ミドルウェアが空文字をnullに変換してくれているらしい。
無効化するには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にクローズされました