Last active
December 10, 2015 19:59
-
-
Save sjimenez77/4485483 to your computer and use it in GitHub Desktop.
PHP: Symfony2: Validación campo de formulario DNI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public function esDniValido(ExecutionContext $context) | |
{ | |
$dni = $this->getDni(); | |
// Comprobar que el formato sea correcto | |
if (0 === preg_match("/\d{1,8}[a-z]/i", $dni)) { | |
$context->addViolationAtSubPath('dni', 'El DNI introducido no tiene el formato correcto (entre 1 y 8 números seguidos de una letra, sin guiones y sin dejar ningún espacio en blanco)', array(), null); | |
return; | |
} | |
// Comprobar que la letra cumple con el algoritmo | |
$numero = substr($dni, 0, -1); | |
$letra = strtoupper(substr($dni, -1)); | |
if ($letra != substr("TRWAGMYFPDXBNJZSQVHLCKE", strtr($numero, "XYZ", "012")%23, 1)) { | |
$context->addViolationAtSubPath('dni', 'La letra no coincide con el número del DNI. Comprueba que has escrito bien tanto el número como la letra', array(), null); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment