2010-02-11 6 views
6

Tengo un conjunto de reglas de validación de formulario que escribí con el complemento jquery validator. Como tengo que repetir la misma validación en el lado del servidor, pensé que sería bueno no tener que volver a escribir mis reglas en PHP. Si las reglas fueran simples field=>rulename=>value, podría almacenarlas como JSON y decodificarlas en matrices PHP. Desafortunadamente, algunas de las reglas dependen de otros campos o tienen valores calculados.jquery to php translator?

¿Existe una manera genérica de traducir field=>rulename=>value=function{} de javascript/jquery a PHP? O bien, ¿hay alguna forma de ejecutar el jquery del lado del servidor y luego pasar los resultados a PHP?

Una muestra de algunas de las reglas:

 rules: { 
      title: {required:true, minlength:5}, 
      description: {required:true, minlength:5}, 
      event_type_id: "required", 
      ev_start: { dateCan: true, required: true}, 
      ev_end:{ dateCan: true, 
        minDate: "input[name='ev_start']" 
      }, 
      ev_starttime:{ 
       required: 
        function(element){ 
         return $("input[name='allday']:unchecked") 
        }, 
       time: true, 
       maxTime: { 
        depends: function(element) { 
           return $("input[name='ev_endtime']:filled") 
             && $("input[name='ev_start']").valid() 
             && $("input[name='ev_end']").valid() 
             && $("input[name='ev_start']").val()==$("input[name='ev_end']").val() 
          }, 
        param: "input[name='ev_endtime']" 
       } 
      }, 
     //etc... 
     } 

Respuesta

3

Creo que usted está en el camino correcto, pero no creo que se va a resultar tan fácil como se esperaba. No conozco una función preconstruida que pueda analizar y reformar con precisión el conjunto de datos para este propósito específico.

Si fuera a hacer esto, formaría mi conjunto de validación en una matriz asociada multidimensional que contenía la información necesaria en PHP.

Después de eso, tendrá que decidir cómo hablar con JavaScript. Si está cargando su JS en línea en la página, simplemente utilizaría PHP para recorrer el conjunto PHP y construir sus reglas JS según sea necesario. Si está utilizando llamadas a funciones externas, JSON codifica la matriz y la pasa a una función de traductor que analiza la matriz JSON y la reformatea según lo que espera JQuery.

EDITAR para aclarar:

Usted podría ir la otra dirección y pasar de JS para PHP, pero hacerlo de la manera Sugiero le dará la posibilidad de intercambiar otras bibliotecas JS o JQuery fácil y simplemente cambia tu traductor Al pasar de JS a PHP, tendría que cambiar AMBOS lados si alguna vez decide cambiar los validadores de JS. Si planea hacer múltiples sitios web o múltiples desarrolladores de codificación sería mucho mejor simplemente aprender una configuración de matriz de PHP común y simplemente escribir traductores para JS.

+0

Supongo que podría escribir las reglas en PHP y luego analizarlas en javascript válido, pero prefiero ir en la otra dirección. – dnagirl

+1

@dnagirl - Mi única preocupación sería que es más difícil pasar información DE JavaScript A PHP, ya que utiliza principalmente un sistema de extracción, tendrás que solicitar los datos con PHP. Eso puede funcionar en este caso, pero para un enfoque más universal, personalmente lo haría en la otra dirección. Imagine 6 meses a partir de ahora decide usar un validador más nuevo, no tiene que cambiar todo el juego, solo cambia el traductor JS ... PHP no va a cambiar drásticamente = P – Shane

+0

buen punto sobre el validador más probabilidades de cambiar que PHP. – dnagirl

0

Dado que las reglas de validación son bastante simples, puede escribir las suyas propias y guardarlas como una función. Simplemente haga que acepte un valor en el parámetro y luego devuelva verdadero o falso.

En su código php que recibe el envío del formulario, solo tendrá que pasar el valor de los campos a su función de validación y comprobar si es verdadero o falso.

La validación en el lado del back-end es importante, ya que la validación basada en JavaScript se puede desactivar fácilmente.

1

Recomendaría hacer lo contrario: convertir algunas funciones de validación basadas en PHP a Javascript. Las funciones convertidas automáticamente no serán tan flexibles, y por lo tanto tan versátiles o fuertes como las funciones codificadas a mano, y usted realmente desea lo mejor en el lado del servidor. En el peor de los casos, si completas algo de validación PHP-> JS, es que el usuario recibe un viaje de ida y vuelta al servidor antes de que se le diga que su dirección de correo electrónico es incorrecta.

+0

@nickf - Si bien esto es posible, revise la edición de mi respuesta para ver el razonamiento por el cual evitaría hacerlo. Es muy limitante y no escala bien. – Shane

1

Creo que lo que estás tratando de hacer (conversión de código javascript a php) no es muy sistemático y dudo que encuentres la solución preparada.

¿Qué pasa con este enfoque:

  1. crear un poco de configuración para los campos que deben ser incluidos en la forma de validación.
  2. Cree una función de PHP que genere html + javascript, incluida la validación basada en la configuración.
  3. Crea una función de PHP que valida la entrada de formulario en función de la configuración.
+0

Estoy de acuerdo con esta solución: tener una configuración común que se traduzca a PHP en el servidor y JS en el cliente es mucho más sencilla que convertir el código JS a PHP sobre la marcha – guigouz