2010-09-30 9 views
6

ACTUALIZACIÓN: Se sugirió en los comentarios que creo una wiki para esto. He terminado, puedes encontrarlo aquí (si deseas mantenerlo al tanto y/o contribuir).Necesita consejo para crear un nuevo "estándar"/"idioma"

http://vrs.tomelders.com

Nunca había trabajado en algo como esto antes, así que estoy volando por completo.


nunca he trabajado en algo como esto antes, así que por favor

me quiero trabajar en una o "lengua" abierta "estándar", o ... bueno, yo no' Realmente sé cómo llamarlo ... para facilitar la validación de formularios. Lo llamo VRS (hojas de reglas de validación) pero en esta etapa, todo es negociable.

La idea es crear una hoja de reglas, similar a CSS que define cómo se deben validar los formularios. Esto requerirá

  1. una sintaxis/Especificación
  2. Un analizador de VRS para convertir el VRS en algo utilizable
  3. procesador A VRS para comparar los datos del formulario en contra de las reglas y devolver una respuesta.
  4. Un formato de respuesta.

Los beneficios de un sistema como este serían

  1. Una plataforma/idioma manera agnóstica para definir validaciones de la forma.
  2. Una forma multiplataforma, altamente portátil para definir validaciones de formulario.
  3. Fácil de leer, fácil de instalar, fácil de modificar.
  4. Integración de cliente y back-end.

Lo primero es lo primero. ¿Cómo debería ser la sintaxis/especificación?

La forma en que veo esto trabajando en línea es que un archivo VRS podría especificarse como un campo oculto y la aplicación enruta los datos de formulario proporcionados a través del procesador VRS antes de procesarlo.

A modo de ejemplo, se puede validar el tipo de contenido del campo "Nombre" se vería así

name { 
    content-type: alpha; 
} 

tipo de contenido podría ser uno de tres valores: alfa, numérico o alfanumérico .

Espero que tenga sentido. Nunca he hecho algo como esto antes, así que estoy ansioso por obtener la opinión de otras personas. Aquí es por lo que yo he recibido

------------------------------------------------------------ 

content-type: (string) alphanumeric | alpha | numeric 

Restricts content to either numeric, text or alphanumeric. 

------------------------------------------------------------ 

is-fatal: BOOL 

If the rule fails, is it fatal? This could be really useful 
for AJAX responses. 

------------------------------------------------------------ 

allow-null: BOOL 

wether a field can be empty or not. Good for required fields 
and checkboxes 

------------------------------------------------------------ 

pattern-match: (string) email | url | regex 

match the field against a pattern. 

------------------------------------------------------------ 

field-match: (string) field_name 

compares a field to another field. eg: password confirmation 

------------------------------------------------------------ 

greater-than: INT | FLOAT 
less-than: INT | FLOAT 
within-range: INT | FLOAT, INT | FLOAT 

Pretty self explanatory. With regard to strings however, 
the string length is compared against the params. 

------------------------------------------------------------ 

is-unique: (func) connection(host,user,pass), (func) map(table, field) 

Check the value against a field in the database to see if 
it's unique. 

------------------------------------------------------------ 

date & time validations 

This i'm a bit worried about in terms of terminology. I also 
want to include dynamic vars in VRS such as 

@now 
@today 
@thisMonth 
@thisYear 

------------------------------------------------------------ 

before: STRING | VAR 
after: STRING | VAR 

Again, self explanatory. Although I'm unsure what the date/time 
format should be. UTC? 


------------------------------------------------------------ 

Elapsed Time: 

I'm completely stuck on how to handle conditions like 
"years elapsed since date is more than 16" 

I don't relish the idea of rules as prolix as 

years-elapsed-since-now-are-more-than:18; 
years-elapsed-since-now-are-less-than:18; 

Por último, estoy debatiendo desarrolladores wether debe ser capaz de especificar los errores/advertencias en el VRS, o deben hacerlo que en la tramitación de la respuesta?

Entonces, eso es mucho que asimilar y espero que esté claro.Mi pregunta (s) supongo que son

  1. ¿Buena/mala idea?
  2. ¿Es este el tipo correcto de sintaxis?
  3. ¿Hay formas más elegantes de nombrar las reglas?
  4. Lo que falta.

gracias


ACTUALIZACIÓN: Algunas personas han dicho que este sistema propuesto es una mala idea. Si lo cree, proporcione un escenario en el que no funcione. Pensar que es una mala idea es una cosa, probar que es una mala idea es otra, y me gustaría ver pruebas de que es una mala idea más temprano que tarde. Si realmente crees que la validación de formularios no puede ser más fácil o menos tediosa, explica por qué.

Además, soy consciente de que la validación de formulario no es un problema nuevo. Sin embargo, actualmente no existe una solución portátil, multiplataforma y de lenguaje cruzado para abordar la validación de formularios, que es a lo que se dirige específicamente esta propuesta.

+0

esto es genial, pero algunas cosas que va a querer agregar/observar son la validación de tipos específicos de elementos. Por ejemplo, direcciones de correo electrónico, números de teléfono, números de seguridad social, fechas, horas, URLs, URI, 2 campos separados deben coincidir, rangos para números, moneda, etc. ... Luego tome todo eso y multiplíquelo por internacionalización :) – Justin808

+0

donde ¿Esto va a ser usado? ¿Esto es algo que vincularías a HTML? ¿se sienta encima de javascript? ¿Se relacionaría con otras áreas, formularios PDF, archivos XML, etc.? ¿Ves algo así como un lenguaje de descripción de formulario genérico del que formaría parte? – Justin808

+0

No solo coloque el VRS en un campo de formulario oculto en el lado del cliente. Si lo hace, podría abrir fácilmente Firebug y modificar el VRS, haciendo que la validación de su formulario pase cuando no debería. Tenga el mismo VRS tanto en el lado del cliente como en el del servidor, para que pueda hacer la validación en el lado del servidor también si se manipula. ¡Aparte de eso, gran idea y buena suerte con eso! –

Respuesta

2

Me gusta la idea de poner los mensajes de error en el VRS también. Pero deberían ser específicos de la regla que falló.

Además, puede considerar no desarrollando un "idioma" completamente nuevo, pero use algo como YAML para el que los análisis ya existen.

Veo este lenguaje como útil, ya que podría usar el mismo VRS para la validación del lado del cliente y del servidor.

PD: Esto debería ser un wiki de la comunidad.

+0

Mencioné en los comentarios anteriores: creo que los errores/advertencias deberían ser manejados por el desarrollador basado en la respuesta, simplemente porque eso sería más fácil de traducir. – gargantuan

+0

En cuanto a la wiki de la comunidad, tienes razón. No hay una respuesta real a esta pregunta. Entonces considéralo hecho. – gargantuan

+0

también, YAML es una buena sugerencia, pero hay algo al respecto, no me gusta su aspecto. Pero tal vez es porque no lo uso. La razón por la que estoy pensando en alinearlo con CSS es porque creo que lo haría más legible para los humanos. Aunque todavía es temprano. Buscaré en YAML más. – gargantuan

0
  1. supongo que es una buena idea, si se puede mantener por sí mismo.

  2. Recuerde, su hacer la sintaxis. Depende de usted (siempre que se vea decente).

  3. no, realmente no. Siempre y cuando los nombres sean obvios (parezcan lo que son), y no sean demasiado largos ni confusos, entonces están bien.

  4. Quizás deba tener en cuenta los valores predeterminados para las reglas cuando no se especifican.

+0

re punto 4. Hmmm, este es un problema debido a las traducciones. Creo que en el futuro, el atributo marcador de posición negará la necesidad de esto. Pero por ahora, tal vez algo así como 'patrón no coincide' o 'patrón-partido: $ patern ^, fail || pass' – gargantuan

-2
  1. Buena idea/mala idea?

    En general, este tipo de cosas es una mala idea. Para eso es PHP.

    ¿Qué hay de malo en http://www.phpformclass.com/ http://www.x-code.com/vdaemon_web_form_validation.php u otras herramientas de gestión de forma PHP?

  2. ¿Es este el tipo correcto de sintaxis?

    No. ¿Qué pasa con PHP? Tiene buena sintaxis para este tipo de cosas.

  3. ¿Hay formas más elegantes de nombrar las reglas.

    Sí. Clases de objetos PHP Numerosos otros proyectos. No eres la primera persona en validar la entrada del formulario.

  4. Lo que falta.

    Respondiendo a la pregunta fundamental: ¿Qué pasa con PHP?

    una lista de proyectos relacionados que ya hacen esto y específicos razones por las que su proyecto es mejor que todos los los otros ya que hay.

+3

¿Por qué la hostilidad? Sé que sabes que hay otros idiomas y otras plataformas. Pero los formularios son formas, y hasta donde puedo decir, los problemas de validación son los mismos en todos los idiomas y plataformas. Es por eso que estoy trabajando en una especificación primero, y la implementación en segundo lugar. – gargantuan

+0

Nada hostil en mi respuesta. Tus percepciones son tuyas, no puedo controlar tus sentimientos. El punto es esto. El problema ya ha sido resuelto por otros proyectos. Si no puede mostrar cómo mejora en esos proyectos, en realidad no está haciendo * mejor *, solo * diferente *. No hay valor en diferente. Hay un gran valor en mejor. –

+0

Personalmente * me gusta * la idea de un formato de validación unificado que pueda ser fácilmente analizado por diferentes lenguajes, incluyendo PHP, JS, C#, etc. De esa manera usted podría tener cierta consistencia de lenguaje cruzado/proyecto, y como dije en mi publicar, para que pueda usar el mismo archivo de validación tanto en el servidor como en el lado del cliente. Definitivamente veo los beneficios de esto. Si volará y ganará popularidad es otra historia. – mpen

Cuestiones relacionadas