Laravel 5.6 Дата рождения Подтверждение - PullRequest
0 голосов
/ 28 мая 2018

Я создал правила проверки в моей модели участника, дата рождения НЕ обязательна.Тем не менее, когда кто-то заполняет свою дату рождения, я хочу, чтобы она была 1. в правильном формате и 2. дата не могла быть датой в будущем.

Однако, когда я заполняю свою формуи оставив дату рождения пустой, я все еще получаю следующую ошибку:

enter image description here

Вот моя основная модель Member.php:

use Esensi\Model\Model;

class Member extends Model
{
    protected $rules = [
        'name' => 'required|alpha|min:2|max:255',
        'surname' => 'required|alpha|min:2|max:255',
        'id_number' => 'required|unique:members,id_number|digits:13',
        'mobile_number' => 'required|digits:10',
        'email' => 'required|email',
        'date_of_birth' => 'date_format:Y-M-D|before:today',
    ];
}

Вот моя функция хранения MemberController.php:

public function store(Request $request) 
{
    $member = new Member;
    $member->name = $request->name;
    $member->surname = $request->surname;
    $member->id_number = $request->id_number;
    $member->mobile_number = $request->mobile_number;
    $member->email = $request->email;
    $member->date_of_birth = $request->date_of_birth;

    if(!$member->save()){
        $errors = $member->getErrors();

         return redirect()
            ->action('MemberController@create')
            ->with('errors', $errors)
            ->withInput();
}
//successful creation
    return redirect()
        ->action('MemberController@index')
        ->with('message', '<div class="alert alert-success">Member Created Successfully!</div>');

}

Как исправить это так, чтобы в дате рождения отображалась ошибка только в том случае, если поле действительно заполнено, а форматирование неверное?

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Здесь вы найдете date правила для различных условий:

$v = Validator::make(
  ['start_date' => date('30-05-2028')], // input
  [
    'date_of_birth' => ['before:5 years ago'],
    'start_date'    => 'required|date_format:d-m-Y|after:8 years',
    'end_date'      => 'date_format:d-m-Y|after:start_date', 
    ]
);

if ($v->passes())
 dd('Your Date format is correct.');
else
 dd($v->errors());

Для вашего случая вы должны попробовать:

'date_of_birth' => 'date_format:Y-m-d|before:today|nullable'

Осторожно: Вы должны использовать это Y-m-dформат.Не это Y-M-D.Параметр Month и Date должен быть в нижнем регистре.Надеюсь, это решит ваши проблемы.

0 голосов
/ 29 мая 2018

Просто дополнительная мысль ...

Я добавил nullable в date_of_birth, а затем получил ошибку SQL, в которой говорилось, что date_of_birth не может быть нулевым.Я забыл установить столбец, чтобы разрешить нулевые значения в моей схеме

Спасибо, предложения помогли

0 голосов
/ 28 мая 2018
'date_of_birth' => 'nullable|date_format:Y-m-d|before:today',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...