Laravel - Проверка правильности формата - PullRequest
0 голосов
/ 26 января 2020

Я использую Laravel 6. Я пытаюсь подтвердить день рождения ввода. Я хочу проверить его как dmY, но, как я знаю, html тип ввода даты по умолчанию, например: вместо Ymd. Когда пользователи получают предложенный ввод, например, используя chrome, он показывает правильный формат dmY. Так, как я могу проверить dmY, когда html делает противоположное?

protected function validator(array $data)
{
    return Validator::make($data, [
        'nickname' => ['required', 'string', 'max:255'],
        'name' => ['required', 'string', 'max:255'],
        'birthday' => ['required', 'string', 'max:100'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
    ]);
}

/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return \App\User
 */
protected function create(array $data)
{
    return User::create([
        'nickname' => $data['nickname'],
        'name' => $data['name'],
        'birthday' => $data['birthday'] = date("d-m-Y", strtotime($data['birthday'])),
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

}

Ответы [ 3 ]

0 голосов
/ 26 января 2020

Ваш валидатор должен выглядеть следующим образом

protected function validator(array $data)
{
    return Validator::make($data, [
        'nickname' => ['required', 'string', 'max:255'],
        'name' => ['required', 'string', 'max:255'],
        'birthday' => ['required', 'date_format:d-m-Y'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
    ]);
}

Проверяемое поле дня рождения должно соответствовать указанному формату.

При проверке поля вы должны использовать либо date, либо date_format, но не оба

. Это правило проверки поддерживает все форматы, поддерживаемые классом DateTime PHP. читать документы здесь формат даты

0 голосов
/ 26 января 2020

Вы должны использовать date_format: dmY в вашем Валидаторе. И я предлагаю вам не использовать date и date_format вместе

0 голосов
/ 26 января 2020

Вам нужно создать правило проверки:

Вы можете проверить дату с помощью date_format или правил проверки даты. Чтобы удовлетворить этим двум правилам проверки, поле должно быть действительной датой в соответствии с функцией strtotime PHP. С помощью метода date_format: format вы можете установить предпочтительный формат даты, и значение в поле должно соответствовать заданному формату.


// with date 
$rules = [
    'start_date'        => 'date',
];

// with date_format
$rules = [
    'start_date'        => 'date_format:d/m/Y',
];

https://arjunphp.com/validate-date-format-laravel/

Это также может работа:

$request->validate([
        'birthday' => 'date_format:d-m-Y'
    ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...