christianberkman/codeigniter4-date-validation

CodeIgnitor4框架的定制验证库,用于验证和比较日期

dev-dev 2024-07-10 18:55 UTC

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'
 */