Problemas con validaciones: expresiones regulares con @Assert\Regex(), @Assert\Email() cambia el estilo y @Assert\NotBlank() muestra mensaje predeterminado en lugar de parametro

373 views
Skip to first unread message

Monserrat Foster

unread,
Jan 29, 2013, 10:06:52 PM1/29/13
to symfo...@googlegroups.com
Vale, tengo los siguientes problemas:

1. Necesito ayuda con las expresiones regulares... he intentado ponerlas de varias formas pero aun no doy con el formato correcto, y no encuentro alguna referencia de "expresiones regulares" mas utilizadas o algo asi...

quiero que el usuario solo permita letras a lo cual le puse entre otras cosas
/**
     * @var string $nombre
     * @Assert\NotBlank(message = "El usuario debe tener entre 5 y 12 letras")
     * @Assert\MinLength(5)
     * @Assert\Regex(pattern="/\[a-zA-Z][a-z]+/")
     * @Assert\MaxLength(12)
     * @ORM\Column(name="nombre", type="string", length=255, unique=true)
     */

y al parecer el @Assert\Regex(pattern="/\[a-zA-Z][a-z]+/") funciona, pero solo muestra "esta valor no es valido", hay alguna manera de personalizar esto?
en ningun momento me sale el mensaje de NotBlank, solo el "este valor no es valido"

2. al igual que en cualquier otro sitio donde utlizo @Assert\NotBlank() nunca me sale el mensaje... y al parecer tampoco puedo personalizar los mensajes de MinLength

3. Necesito ayuda con una expresion regular para un registro que debe ser mas o menos asi LETRA GUION 8NUMEROS GUION NUMERO ej: X-20081202-2 , no tengo idea de como hacerla, si alguien me pudiera orientar, seria espectacular...

4. y por ultimo, pero no menos importante
el   @Assert\Email() me cambia el estilo de css, es decir, pareciera que el campo pierde el estilo que tenia antes de la validacion...
adjunto imagen de ejemplo


Hay alguna manera de evitar esto? Agradezco la ayuda y orientacion...

Monserrat Foster

unread,
Jan 29, 2013, 10:49:49 PM1/29/13
to symfo...@googlegroups.com
La respuesta a la 3era segun mis conocimientos limitados es @Assert\Regex(pattern="/\w\-\d{8}\-\d{1}/")

Jorge Noguera

unread,
Jan 30, 2013, 2:31:59 PM1/30/13
to symfo...@googlegroups.com
Hola, voy a tratar de ayudarte en lo que pueda

1. Esta es la manera correcta:
* @Assert\Regex(pattern="/^[A-Z]{1}+[a-zA-Z0-9]/", match=true, message="Mensaje")
- pattern = es la expresión regular (busca online algún generador para perl si no entendes bien esto)
- match = debe coincidir con la expresion o por el contrario no debe ser igual
- mensaje

2. Generalmente los asserts funcionan en el orden en el que se escriben, te recomiendo que pongas los asserts debajo de la sintaxis @ORM\Column
/**
  * @var string $nombre
  *
  * @ORM\Column(name="nombre", type="string", length=255, unique=true)
  * @Assert\NotBlank(message = "El usuario debe tener entre 5 y 12 letras")
  * @Assert\MinLength(limit=10, message="Ingrese {{ limit }} caracteres como mínimo")
  * @Assert\MaxLength(limit=100, message="Ingrese un máximo de {{ limit }} caracteres o menos")
  * @Assert\Regex(pattern="/^[A-Z]{1}+[a-zA-Z0-9]/", match=true, message="Mensaje")
  */

3. Te recomiendo este sitio, es recomendable que aprendas a hacer expresiones regulares, vas a necesitar mucho en el futuro :) http://rubular.com/

4. Tendrías que verificar el html que inserta en el DOM a la hora de validar, probablemente tengas que editar el template que genera el error

Saludos,
Reply all
Reply to author
Forward
0 new messages