2017-09-13 5 views
0

私は自分のフォームに日付を持つ4つの入力があり、フォームを送信する前にそれらの日付すべての検証を作成したかったのです。 これは、これは私のValidator.phplaravelで日付検証機能を作成しますか?

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

私controller.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;} 

である私の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); 
} 
} 

である。このアプローチはまったく動作していないようです。どんな助けもありがとう。私は、日付の検証機能を作成するために、なぜ、入力

答えて

0

を検証するために、私のすべてのコントローラにvalidate_date機能を使用しています。 基本的には、ユーザーが入力した日付を検証したいのですが、なぜlaravelの組み込みフォームバリデータークラスを使用しないのですか? (Laravel Form Validation Documentation)には、すでに「日付」タイプの検証ルールが含まれています。

関連する問題