Después de Laravel 5.5, puede crear su propio objeto de regla de validación personalizado.
Para crear una nueva regla, simplemente ejecute el comando Artisan:
php artisan make:rule Id
Laravel colocará la nueva clase de reglas en el app/Rules
directorio. Los
ejemplos de reglas de validación de objetos personalizados pueden ser similares a:
<? php espacio de nombres App \ Rules; use Illuminate \ Contracts \ Validation \ Rule; La identificación de la clase implementa la regla { mensaje $ privado; / ** * Determinar si pasa la regla de validación. * * @param cadena $ atributo * @param mixto $ valor * * @return bool * / pasa de función pública ($ atributo, $ valor) { if (! $ this-> isValidCard ($ value)) { $ this-> mensaje = '身份证 格式 错误, 请 输入 正确 的 身份证.'; falso retorno; } devuelve verdadero; } / ** * Obtiene el mensaje de error de validación. * * @return string * / public function message () { return $ this-> message; } / ** * 身份证 验证 * @param $ id * @return bool * / función privada isValidCard ($ id) { if (18! = Strlen ($ id)) { return false; } $ peso = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; $ código = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; $ modo = 0; $ ver = substr ($ id, -1); if ($ ver == 'x') { $ ver = 'X'; if ($ clave == 17) { continuar; } $ dígito = intval (substr ($ id, $ clave, 1)); $ modo + = $ dígito * $ val; } $ modo% = 11; if ($ ver! = $ code [$ mode]) { return false; } lista ($ mes, $ día, $ año) = self :: getMDYFromCard ($ id); $ check = checkdate ($ mes, $ día, $ año); if (! $ check) { devuelve falso; } $ hoy = fecha ('Ymd'); $ fecha = substr ($ id, 6, 8); if ($ fecha> = $ hoy) { devolver falso; } devuelve verdadero; } función privada getMDYFromCard ($ id) { $ date = substr ($ id, 6, 8); $ año = substr ($ fecha, 0, 4); $ mes = substr ($ fecha, 4, 2); $ día = substr ($ fecha, 6); return [$ mes, $ día, $ año]; } }
Introducir en el controlador:
$ reglas = [ 'nombre_comprador' => ['expresión regular: / ^ [\ p {Han} | \ w] {2,30} $ / u'], 'número_id_comprador' => ['requerido', nueva ID], 'buyer_telephone' => 'obligatorio | único: inversor', ];