Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Drupal »

Validacion de campos de formularios

Estas en el tema de Validacion de campos de formularios en el foro de Drupal en Foros del Web. Hola, de nuevo por aqui, tengo el bendito problema de la validación de los campos de un formulario que hice en CCK. Explico: Mi formulario ...
  #1 (permalink)  
Antiguo 25/01/2011, 08:21
 
Fecha de Ingreso: enero-2009
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Validacion de campos de formularios

Hola, de nuevo por aqui, tengo el bendito problema de la validación de los campos de un formulario que hice en CCK.

Explico: Mi formulario tiene los campos fechas, y necesito compararlos para que no sean iguales, ni la fecha de salida sea despues de la fecha de llegada, ni que ninguna de las fechas sea antes que la fecha actual.

lo hice con webform para otro proyecto y funcionó de maravillas gracias a un comentario por este foro, pero para este proyecto webform no me sirve, ya que tengo que hacer la busqueda de los nodos que se generan a partir de este formulario y las peticiones de webform no puedo buscarlas con un formulario de busqueda.

me dieron en otro foro este código

Código PHP:
<?php
function hook_validate($node, &$form) {
  if (isset(
$node->end) && isset($node->start)) {
    if (
$node->start $node->end) {
      
form_set_error('time't('An event may not end before it starts.'));
    }
  }
}
?>
Me dicen que con eso puedo validar los campos del nodo, pero no se como sacar los campos que necesito para compararlos, y ni siquera se donde colocar este codigo para que me funcione...

Alguien sabe de esto???? muchas gracias por su ayuda!!!

Saludos!!!
  #2 (permalink)  
Antiguo 25/01/2011, 09:01
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Validacion de campos de formularios

Primero que nada, para poder validar un campo en cck, tenes que usar hooks, por lo tanto, vas a tener que crearte tu propio modulo e interceptar ese evento, en tu caso el insertar el nodo en caso de q la validacion de las fechas sea correcta.

El hook apropiado es el nodeapi, aunque el que te dieron arriba es similar, pero mejor usar el que yo te digo.

Pasos a seguir:

1- Crear tu modulo.
2- Implementar el hook_nodeapi.
3- Filtrar la validacion para los tipos de contenido que vos quieras.
4- En caso de que el $op sea "validate", hacer la validacion, y en caso de que no sea valida (valga la redundancia), usar form_set_error().

Este articulo te puede servir:

http://drupal.org/node/134289

Saludos.
  #3 (permalink)  
Antiguo 25/01/2011, 15:03
 
Fecha de Ingreso: enero-2009
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Validacion de campos de formularios

Hola de nuevo MarioAraque

Gracias por siempre tener una respuesta!! me has ayudado un monton en todos los proyectos que he tenido que comenzar en drupal.

Voy a probar y cualquier cosa comento.

Saludos!!!
  #4 (permalink)  
Antiguo 25/01/2011, 15:22
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Validacion de campos de formularios

Bueno, uno siempre que puede da una respuesta, cualquier cosa postea!

Saludos.
  #5 (permalink)  
Antiguo 26/01/2011, 15:07
 
Fecha de Ingreso: enero-2009
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Validacion de campos de formularios

Hola MarioAraque!

Revise lo que me pasaste y efectivamente funciona... ahora, requiero hacer tres if para la validación de las fechas, uno para comparar que la fecha de salida no puede ser igual a la fecha de recepcion, otro para comparar que la fecha de salida no puede ser anterior a la fecha de recepcion, y la otra para comparar que la fecha de salida y de recepcion no pueden ser anterior a la fecha actual...

Tengo el siguiente codigo en mi módulo:

Código PHP:
<?php
 $actualfecha 
date('d,m,Y');
 function 
validate_form_nodeapi($node$op$teaser NULL$page NULL){
    if(
$node->type == 'form_guia'){
       switch (
$op){  
         case 
'validate':
                     
$fecsalida $node->field_fecsalida_[0][value];
                     
$fecrecep $node->field_fecrecep_[0][value];   
               if(
$fecsalida == $fecrecep
                 
form_set_error('fecsalida','La fecha de salida no puede ser   igual a la fecha de recepci&oacute;n, por favor introduzca una fecha v&aacute;lida.');
          break;
      }
    } 
}
Este código envia el mensaje pero cuando no se cumple el caso se queda pegado y no me deja hacer nada.

Cuando intento meter otro if me sale siempre el primer mensaje, intenté con un else pero no funciona tampoco, entonces como haría para validar varios campos en un mismo formulario???

Agradecida de nuevo por tus respuestas me despido.

Saludos!!!
  #6 (permalink)  
Antiguo 26/01/2011, 15:24
 
Fecha de Ingreso: enero-2009
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Validacion de campos de formularios

Sorry, en el otro post coloque "que la fecha de salida no puede ser anterior a la fecha de recepcion", es que la fecha de salida no puede ser posterior a la fecha de recepción, ejejejej

Despues de leer el post me di cuenta de eso....
  #7 (permalink)  
Antiguo 26/01/2011, 16:05
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 15 años, 1 mes
Puntos: 265
Respuesta: Validacion de campos de formularios

Bueno, yo no estoy seguro de que se puedan comparar fechas en Drupal con operadores logicos del tipo "<" o "==", eso efectivamente te funciona bien? Pq, si no me equivoco, Drupal te los guarda como timestamp...

A que te referis con "se queda pegado y no me deja hacer nada"? Yo lo que noto es que si $fecsalida == $fecrecep no se cumple, simplemente te guarda el nodo sin mas ... no te tira el error de formulario. En resumen: pasa la validacion.

Comentame eso y lo vemos.

Saludos.
  #8 (permalink)  
Antiguo 27/01/2011, 07:19
 
Fecha de Ingreso: enero-2009
Mensajes: 85
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: Validacion de campos de formularios

Hola!!!

Bueno, en cuanto al comentario de que se queda pegado es que precisamente cuando se cumple la condicion no sigue la validación, es como si saltara el "if" y solamente reconoce el form_set_error();.

Fui al phpmyadmin de mi proyecto y las fechas tienen el tipo de dato varchar.

Pensé en hacer un solo if para las tres validaciones que tengo que hacer con OR para no enrredarme con 500 if, jejejeje, pero si ni siquiera me toma una validación sencilla no puedo hacer mas...

Igualmente yo sigo probando, pero por ahora no se me ocurre algo mas...

Gracias por tu diligencia y apoyo!!!!

Saludos!

Etiquetas: campos, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:39.