|string> */ public function rules(): array { return [ 'username' => ['required', 'string', 'min:3', 'max:32', 'regex:/^[A-Za-z0-9]+$/'], 'email' => ['required', 'string', 'email:rfc', 'max:255'], 'invite_code' => ['required', 'string', 'min:6', 'max:32'], 'password' => ['required', 'string', 'min:8', 'max:32', 'confirmed', 'regex:/^(?=.*[A-Za-z])(?=.*\d).+$/'], 'terms' => ['accepted'], ]; } /** * @return array */ public function messages(): array { return [ 'username.required' => 'Укажи логин аккаунта.', 'username.string' => 'Логин должен быть строкой.', 'username.min' => 'Логин должен содержать минимум 3 символа.', 'username.max' => 'Логин не должен быть длиннее 32 символов.', 'username.regex' => 'Логин может содержать только латинские буквы и цифры.', 'email.required' => 'Укажи email для аккаунта.', 'email.string' => 'Email должен быть строкой.', 'email.email' => 'Укажи корректный email адрес.', 'email.max' => 'Email не должен быть длиннее 255 символов.', 'invite_code.required' => 'Укажи инвайт-код.', 'invite_code.string' => 'Инвайт-код должен быть строкой.', 'invite_code.min' => 'Инвайт-код выглядит слишком коротким.', 'invite_code.max' => 'Инвайт-код выглядит слишком длинным.', 'password.required' => 'Укажи пароль.', 'password.string' => 'Пароль должен быть строкой.', 'password.min' => 'Пароль должен содержать минимум 8 символов.', 'password.max' => 'Пароль не должен быть длиннее 32 символов.', 'password.confirmed' => 'Подтверждение пароля не совпадает.', 'password.regex' => 'Пароль должен содержать хотя бы одну букву и одну цифру.', 'terms.accepted' => 'Нужно принять правила сервера и пользовательское соглашение.', ]; } /** * @return array */ public function attributes(): array { return [ 'username' => 'логин аккаунта', 'email' => 'email', 'invite_code' => 'инвайт-код', 'password' => 'пароль', 'terms' => 'правила', ]; } }