- ルールベースのバリデーション:
Laravelでは、バリデーションルールを使用して時刻の入力を検証することができます。以下のように、
date_format
ルールを使用して時刻のフォーマットを指定します。
$request->validate([
'time' => 'required|date_format:H:i',
]);
上記の例では、time
というフィールドが必須であり、H:i
形式(例: 13:45)の時刻であることを検証しています。
- カスタムバリデーションルールの作成: 特定のバリデーションルールが用意されていない場合、独自のカスタムバリデーションルールを作成することもできます。以下は、時刻が午前9時から午後5時の範囲内であることを検証するカスタムルールの例です。
まず、app/Rules
ディレクトリにTimeRange.php
という名前の新しいクラスを作成します。
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class TimeRange implements Rule
{
public function passes($attribute, $value)
{
$time = \DateTime::createFromFormat('H:i', $value);
$start = \DateTime::createFromFormat('H:i', '09:00');
$end = \DateTime::createFromFormat('H:i', '17:00');
return $time >= $start && $time <= $end;
}
public function message()
{
return '時刻は午前9時から午後5時の範囲内である必要があります。';
}
}
次に、バリデーションルールを使用して入力を検証します。
use App\Rules\TimeRange;
$request->validate([
'time' => ['required', new TimeRange],
]);
上記の例では、time
というフィールドが必須であり、TimeRange
ルールに合致する時刻であることを検証しています。
これらは、Laravelで時刻のバリデーションを行うためのシンプルで簡単な方法の一部です。他にも様々なバリデーションルールやカスタムルールを利用することができます。詳細な情報については、公式のLaravelドキュメントを参照してください。