Как создать уникальный столбец в валидаторе регистрации для двух разных таблиц - PullRequest
0 голосов
/ 15 мая 2019

Я создаю две разные регистрации (для администратора и пользователя).Но имя пользователя-> уникальное в валидаторе предназначено только для пользователей таблицы.

protected function validator(array $data)
{
    return Validator::make($data, [
        'firstname' => ['required', 'string', 'max:255', 'min:3'],
        'middlename' => ['required', 'string', 'max:255', 'min:3'],
        'lastname' => ['required', 'string', 'max:255', 'min:3'],
        'username' => ['required', 'string', 'max:255', 'min:3', 'unique:users'],
        'password' => ['required', 'string', 'min:6', 'confirmed'],
    ]);
}

проверка уникального имени пользователя для регистрации пользователя из таблицы пользователей и проверка уникального имени пользователя для регистрации администратора из таблицы администраторов.

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Валидатор должен только проверять данные, плохо связывать его с понятиями о маршрутах и ​​т. Д. *

Я бы создал собственный класс Валидатора, который будет принимать имя таблицы в качестве параметра.

Затем вы можете создать экземпляр этого валидатора с правильными параметрами таблицы в вашем контроллере (который будет знать о маршруте, запросе и т. Д.)

0 голосов
/ 15 мая 2019

Вы можете использовать имя маршрута или что-то подобное из текущего запроса , чтобы определить, какие правила должны быть использованы.

protected function validator(array $data)
{
    $route = Request::route()->getName();

    $rules = [
        'firstname' => ['required', 'string', 'max:255', 'min:3'],
        'middlename' => ['required', 'string', 'max:255', 'min:3'],
        'lastname' => ['required', 'string', 'max:255', 'min:3'],
        'password' => ['required', 'string', 'min:6', 'confirmed'],
    ];

    // whatever your route name or identifier to differentiate between
    // user and admin registration may be.
    if ($route === 'registration.user') {
        $rules = $rules + [
            'username' => ['required', 'string', 'max:255', 'min:3', 'unique:users'],
        ];
    }

    return Validator::make($data, $rules);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...