web-dev-qa-db-ja.com

Laravel 5.4検証ルールが機能しないことがある

日付フィールドが存在する場合にのみ検証しようとしています。 Laravel 5.2から5.4にアップグレードする前は問題なく動作していました

Laravel 5.2では、このルールはうまく機能します:

public function rules()
{
    return [
        'available_from' => 'date',
    ];

}

5.4では検証エラーThe available from is not a valid date.が返されるこの新しいルールを試しました

public function rules()
{
    return [
        'available_from' => 'sometimes|date',
    ];

}

それでも同じエラーが発生し、sometimesルールは検証にまったく影響を与えていないようです。このエラーを取り除くにはどうすればよいですか?

Laravelが以前機能していた何かを変更した理由がわかりません!!!

17
Munna Khan

この問題は、Http\Kernel.phpの\ Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull :: classが原因で発生します。

空の日付フィールドを送信すると、このミドルウェアは空の文字列をnullに変換します。次に、検証は無効な日付エラーを返します。詳細は docs を確認してください。

nullableで修正できます

public function rules()
{
    return [
        'available_from' => 'sometimes|nullable|date',
    ];

}

から Laravel docs

nullable

検証中のフィールドがnullの可能性があります。これは、null値を含む可能性のある文字列や整数などのプリミティブを検証するときに特に役立ちます。

36
ikurcubic