como validar un campo de texto para que solo acepte numeros enteros

1,478 views
Skip to first unread message

Gr Cb

unread,
Aug 26, 2014, 7:50:39 PM8/26/14
to symfo...@googlegroups.com
Buenas noches tengan todos, mi duda es la siguiente:

Estoy tratando de validar un campo de texto mediante restricciones (constraints) para que solo acepte valores numericos (solo digitos).

este es el formulario:

$builder
->add('telefono', 'text', array('label'=>'Telefono:'));

y esta la restriccion que aplico en el archivo validation.yml

telefono:
- Type:
type: int
message: este campo solo acepta digitos

El resultado, aunque introduzca un simple numero, es siempre que no es un dato valido.

Javier Eguiluz

unread,
Aug 27, 2014, 5:15:32 AM8/27/14
to symfo...@googlegroups.com
On Wednesday, August 27, 2014 1:50:39 AM UTC+2, Gr Cb wrote:
Buenas noches tengan todos, mi duda es la siguiente:

Estoy tratando de validar un campo de texto mediante restricciones (constraints) para que solo acepte valores numericos (solo digitos).

este es el formulario:

$builder
->add('telefono', 'text', array('label'=>'Telefono:'));

y esta la restriccion que aplico en el archivo validation.yml

telefono:
- Type:
type: int
message: este campo solo acepta digitos

Además del tipo "int", existe un tipo de campo de formulario genérico para números: http://symfony.com/doc/current/reference/forms/types/number.html

En cualquier caso, los números de teléfono nunca se deberían validar como números o como enteros. Primero, el formato de los números de teléfono puede tener muchas variantes: con o sin espacios, con o sin prefijos y extensiones, con o sin paréntesis, etc.

La validación más sencilla y eficaz en este caso sería una expresión regular que sólo permita números y aquellos caracteres que hayas decidido permitir (espacios, paréntesis, +, etc.)

Un saludo,
Javier Eguiluz

Manuel Aguirre

unread,
Aug 27, 2014, 7:07:54 AM8/27/14
to symfo...@googlegroups.com
Por otro lado, siempre que he tenido que usar un campo de texto que solo acepta numeros he usado el type: numeric, ya que int comprueba el tipo de dato de la propiedad y no el valor como tal de la misma.

Y supongo que al ser el field de tipo text, internamente el componente de formularios castea el valor escrito en el navegador a string.


--
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

---
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a symfony-es+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--

Manuel Aguirre.


manuel_j555 | Desarrollador de Software | Optime Consulting | twitter | github | Sitio web


A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales.

Gr Cb

unread,
Aug 28, 2014, 11:23:58 AM8/28/14
to symfo...@googlegroups.com
Muchas gracias a ambos por su ayuda. Ya había leído que era mas recomendable usar expresiones regulares. Estoy investigando ya que soy nuevo en esto. Si tienen algún material (online) sobre expresiones regulares al que me puedan referir (digo por la exactitud) se los agradecería.


Absalon Valdes Ormeño

unread,
Sep 2, 2014, 4:12:27 PM9/2/14
to symfo...@googlegroups.com
Algunas personas cuando se enfrentan a un problema piensan "Ya sé, ¡usaré expresiones regulares!" Ahora tienen dos problemas. - Jamie Zawinski, programador de Netscape Navigator 1.1

Dicho esto, cuál es el formato de número telefónico que quieres permitir en el input de tu aplicación? Con eso sería más fácil ayudarte a construir la expresión regular. Como dijo Javier, puede tener parentesis, el signo + y guiones. Este link [1] es de una app web que permite testear expresiones regulares. Especificamente el link es de un regexp para validar números telefonicos y si puedes ver al lado derecho sale explicado que hace cada parte de la expresión regular.

[1] http://regex101.com/r/wZ4uU6/1

Saludos.
Reply all
Reply to author
Forward
0 new messages