christianberkman / codeigniter4-date-validation
CodeIgnitor4框架的定制验证库,用于验证和比较日期
dev-dev
2024-07-10 18:55 UTC
Requires (Dev)
- codeigniter4/devkit: ^1.2
- codeigniter4/framework: ^4.5
This package is auto-updated.
Last update: 2024-09-10 19:19:33 UTC
README
CodeIgniter4框架的定制验证库,用于验证和比较日期。
待办事项
- 添加规则
- 使用CodeIgniter4编码标准库
- 创建单元测试
- 使用语言文件进行错误处理
安装
通过composer安装
composer require christianberkman/codeigniter4-date-validation
如果您的CodeIgniter应用已启用自动发现,库将自动被发现。
手动安装
将 src/DateValidation.php 复制到 app/ThirdParty,调整命名空间并在 app/Config/Validation.php 中注册
用法
该库提供了验证值日期与今天或其他字段的规则。所有规则也验证日期,因此不需要调用内置的 valid_date 规则。
// any date before today's date
date_before_today[Y-m-d]
// any on or after a given field date
date_starting[date_arrival,Y-m-d]
// any date on Monday (1) or Wednesday (3)
date_on_dow[Y-m-d,1,3]
日期格式
当比较值日期与字段日期时,假定两个日期具有相同的格式。所有格式参数都是可选的。如果指定了格式参数,日期将使用 DateTime::createFromFormat 创建。如果省略了格式参数,日期将使用 strtotime() 创建。建议始终指定格式。
异常:对于 date_on_dow 规则,需要格式参数,如果您希望不指定任何格式,则可以指定 'none': 'today' -> date_on_dow[none,1]
时间信息
所有时间信息都将被丢弃,所有时间都将设置为 00:00:00 UTC。
错误
每个规则动态返回错误,例如 日期必须在last_available_date字段之前。
可用规则
完整示例
$data = [ 'arrival_date' => '2024-07-01', 'excursion_date' => '2024-07-03', 'depatrue_date' => '2024-07-10', 'last_available_date' => '2027-08-09', ]; $rules = [ // arrival needs to be at earliest tomorrow 'arrival_date' => 'date_after_today', // excursion needs to be between (and not on) departure and arrival 'excursion_date' => 'date_after[arrival_date,Y-m-d]|date_before[depatrue_date,Y-m-d]', // departure needs to be after (and not on) the arrival date and before (and not on) the last available date 'departure_date' => 'date_after[arrival_date,Y-m-d]|date_before[last_available_Date]', ]; $validation = $this->validateData($data, $rules); // returns false $errors = $this->validator->getErrors(); /** * Result: * 'departure_date' => 'Date must be before last_available_date field' */