2016-04-11 8 views
7

In meinem Modell habe ich ein paar Validierungsregeln für Datumsfelder definiert mit before und after:Datum Validierung - Wie lokalisieren/übersetzen Strings „heute“ und „morgen“

'birth_date' => 'required|date|before:today|after:01-jan-1920', 
'another_date' => 'required|date|before:tomorrow|after:01-jan-1990', 

Die Validierung funktioniert gut, aber ich kann Finde heraus, wie man die Zeichenfolgen today und tomorrow in die Validierungsnachricht übersetzt.

In der validation.php Sprachdatei der after und before Nachrichten lokalisierbar sind jedoch der :date Teil der Nachricht angezeigt wird noch die englische Version für today und tomorrow.

"after"   => "The :attribute must be a date after :date.", 
"before"   => "The :attribute must be a date before :date.", 

Wie konnte ich diese beiden Wörter lokalisieren - today und tomorrow - in der Validierungsnachricht?

+0

Die Antworten sind bisher nur Problemumgehungen. Was müssen wir in die Ressourcen/lang/whichver/validation.php für "heute" und "morgen" schreiben? – MPS

Antwort

0

Es macht wahrscheinlich mehr Sinn einige benutzerdefinierte Validierungen zu machen, aber ich denke, Sie sollten diese in der Lage sein zu tun, einfach mit Kohlenstoff:

$dt = new Carbon\Carbon(); 
$today = $dt->today(); 
$tomorrow = $dt->tomorrow(); 

    $rules = [ 
     ... 
     'birth_date' => 'required|date|before:'.$today.'|after:01-jan-1920', 
     'another_date' => 'required|date|before:'.$tomorrow.'|after:01-jan-1990' 
    ]; 
0

Sie benutzerdefinierte Validierung Nachrichten pro Feld verwenden können, entweder auf Dateiüberprüfung Sprache oder im Code selbst: https://laravel.com/docs/5.2/validation#custom-error-messages

Werfen wir einen Controller Validierung simulieren, um zu sehen, wie es funktioniert:

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Illuminate\Routing\Controller; 

class YourController extends Controller 
{ 
    public function store(Request $request) 
    { 
     $rules = [ 
      'birth_date' => 'required|date|before:today|after:01-jan-1920', 
     ]; 
     $messages = [ 
      'birth_date.before' => 'A data de nascimento deve ser uma data antes de hoje.', // "The birth date must be a date before today" in portuguese 
     ]; 

     $this->validate($request, $rules, $messages); 

     /* your stuff */ 
    } 
} 

Y Sie können das auch mit form requests (die noch schöner sind) tun, alles, was Sie tun müssen, ist Ihre benutzerdefinierte übersetzte Nachrichten innerhalb messages() Methode zurückgeben. :)

Verwandte Themen