2016-04-11 2 views
7

В моей модели я определил несколько правил проверки для поля даты с помощью before и after:Даты - Как локализовать/перевод строк «сегодня» и «завтра»

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

Проверки отлично работает, однако я могу 't выяснить, как перевести строки today и tomorrow в сообщение подтверждения.

В файле validation.php языка в after и before сообщений являются локализуемыми, однако :date части сообщения по-прежнему отображает английскую версию для today и tomorrow.

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

Как я мог локализовать эти два слова - today и tomorrow - в сообщении проверки?

+0

Ответы пока только обходные пути. Что мы должны вкладывать в ресурсы/lang/whichever/validation.php для учета «сегодня» и «завтра»? – MPS

ответ

0

Возможно, имеет смысл сделать некоторые пользовательские валидации, но я думаю, что вы должны быть в состоянии сделать это просто с Carbon:

$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

Вы можете использовать пользовательские сообщения проверки на поле, либо на языковой файл проверки или в самом коде: https://laravel.com/docs/5.2/validation#custom-error-messages

Давайте имитировать проверку контроллера, чтобы увидеть, как это работает:

<?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 ou также может сделать это с помощью form requests (которые даже приятнее), все, что вам нужно сделать, это вернуть ваши собственные переведенные сообщения внутри метода messages(). :)

Смежные вопросы