【问题标题】:Create a date validation function in laravel?在 laravel 中创建日期验证功能?
【发布时间】:2023-03-20 06:25:01
【问题描述】:

我有 4 个输入在我的表单中有日期,我想在提交表单之前为所有这些日期创建一个验证。 这是我的 DatetimeHelper.php

class DateTimeHelper
    {

    //This formats a date for insertion into the database


    public static function FormatForDB($date, $format = "m/d/Y", $if_null = "0000-00-00", $outputFormat = "date")
    {
        if (!isset($date)) {
            return $if_null;
        }

        if (trim($date) == "") {
            return $if_null;
        }

        if (trim($date) == "0000-00-00" || trim($date) == "00-00-0000") {
            return $if_null;
        }

         //var_dump(Carbon::createFromFormat($format, $date));die;
        try{
            $parsedDate = Carbon::createFromFormat($format, $date);
            if ($outputFormat == 'date') {
                return $parsedDate->toDateString();
            } else if ($outputFormat == 'datetime') {
                return $parsedDate->toDateTimeString();
            } else if ($outputFormat == 'time') {
                return $parsedDate->toTimeString();
            }
        }catch(\Exception $e){
            return $if_null;
        }

         }


    //This formats the return date from the database

public static function FormatFromDB($date, $format = "m/d/Y", $if_null = "0000-00-00")
{
    if (!isset($date)) {
        return $if_null;
    }

    if (trim($date) == "") {
        return $if_null;
    }

    if (trim($date) == "0000-00-00" || trim($date) == "00-00-0000") {
        return $if_null;
    }

    return Carbon::createFromFormat("Y-m-d", $date)->format($format);
}
}

这是我的 Validator.php

public static function validate_date($date, $format = DATE_ATOM)
{
    try{
        $parsedDate = Carbon::createFromFormat($format, $date);
        return true;
    }catch(\Exception $e){
        return false;
    }
}

我的控制器.php

  $invalid_fields = [];
  $events_fields =['date_1' => 'date1',
                'date_2' => 'date2',
                'date_3' => 'date3',
                'date_4' => 'date4'];
function input_validate($request)
{

    foreach ($request->all() as $key => $value) {
        switch ($key) {

            case 'date1':
                if (!$this->validate_date($value)) {
                    $this->invalid_fields[] = $this->event_fields[$key].' is not a valid date';
                }
                break;}
           case 'date2':
                if (!$this->validate_date($value)) {
                    $this->invalid_fields[] = $this->event_fields[$key].' is not a valid date';
                }
                break;}

这种方法似乎根本不起作用。任何帮助,将不胜感激。我在所有控制器中使用 validate_date 函数来验证输入

【问题讨论】:

    标签: php laravel php-carbon


    【解决方案1】:

    为什么要创建日期验证功能。 基本上你想验证用户输入的日期,那你为什么不使用 laravel 的内置表单验证器类。 (Laravel Form Validation Documentation) 已经包含了“日期”类型的验证规则。

    【讨论】:

      猜你喜欢
      • 2019-06-09
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多