2015-08-14 9 views
12

Uso la seguente convalida della data per la richiesta POST in entrata.La convalida data_format di Laravel 5.1 consente due formati

'trep_txn_date' => 'date_format:"Y-m-d H:i:s.u"' 

Ciò consente solo una data di questo tipo cioè 2012-01-21 15: 59: 44.8

voglio anche consentire data senza TIME esempio 2012-01-21, che quando inviato a mysql db verrà archiviato automaticamente come 2012-01-21 00: 00: 00.0

C'è un modo per farlo utilizzando le regole di convalida esistenti di Laravel. C'è un modo per definire più formati nella regola date_format qualcosa di simile in basso.

'trep_txn_date' => 'date_format:"Y-m-d H:i:s.u","Y-m-d"' //btw this didn't work. 

Grazie,

K

risposta

14

Il date_format validatore accetta un solo formato di data come parametro. Per poter utilizzare più formati, è necessario creare una regola di convalida personalizzata. Fortunatamente, è piuttosto semplice.

È possibile definire la data di multi-formato di convalida nel AppServiceProvider con il seguente codice:

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
    Validator::extend('date_multi_format', function($attribute, $value, $formats) { 
     // iterate through all formats 
     foreach($formats as $format) { 

     // parse date with current format 
     $parsed = date_parse_from_format($format, $value); 

     // if value matches given format return true=validation succeeded 
     if ($parsed['error_count'] === 0 && $parsed['warning_count'] === 0) { 
      return true; 
     } 
     } 

     // value did not match any of the provided formats, so return false=validation failed 
     return false; 
    }); 
    } 
} 

È possibile poi utilizzare questa nuova regola di convalida del genere:

'trep_txn_date' => 'date_multi_format:"Y-m-d H:i:s.u","Y-m-d"' 

Puoi leggi ulteriori informazioni su come creare regole di convalida personalizzate qui: http://laravel.com/docs/5.1/validation#custom-validation-rules

+0

Sì, stavo pensando a una regola di convalida personalizzata, ma il modo in cui hai mostrato è davvero un buon modo per affrontarlo. Grazie. – karmendra

Problemi correlati