Carbon(laravel)处理无效日期

时间:2017-10-19 11:31:50

标签: php laravel exception error-handling php-carbon

我有一个非常简单的问题..我将Carbon::parse($date)函数与$date = '15.15.2015'一起使用。当然它不能返回有效的字符串,因为没有第15个月。但我怎么能忽视"错误信息? 伟大的将是像

if (Carbon::parse($date) != error) Carbon::parse($date);
else echo 'invalid date, enduser understands the error message';

4 个答案:

答案 0 :(得分:5)

您可以像下面这样抓住Carbon提出的异常:

try {
    Carbon::parse($date);
} catch (\Exception $e) {
    echo 'invalid date, enduser understands the error message';
}

答案 1 :(得分:2)

使用之前通过Laravel's validation。创建一个这样的验证器:

     protected function validator(array $data)
{
    //$data would be an associative array like ['date_value' => '15.15.2015']
    $message = [
        'date_value.date' => 'invalid date, enduser understands the error message'
    ];
    return Validator::make($data, [
        'date_value' => 'date',
    ],$message);
}

在使用你的约会之前给他打电话:

$this->validator(['date_value' => $date])->validate();
// $this->validator(request()->all())->validate(); you can pass the whole request if fields names are the same

Carbon::parse($date);

您可以将所有需要的字段添加到验证器,并应用处理每封邮件或使用默认邮件的多个验证。如果您要验证用户的输入

,这将是一种方法

答案 2 :(得分:0)

尝试一下

all_receivers id [725 is invalid. all_receivers id  607] is invalid.

答案 3 :(得分:0)

另一种解决方案是全局处理异常。

  • 在app / Exceptions / Handler.php中
use Carbon\Exceptions\InvalidFormatException;
  • 然后在render方法中检查Carbon是否引发了异常
    if ($exception instanceof InvalidFormatException) {
            return response()->json([
                'status' => 'fail',
                'data' => [
                    'message' => 'Invalid date formate!'
                ]
            ], 400);
        }