validar formulario

edited febrero 2008 in Principiantes
he revisado los manuales una y otra vez antes de preguntar, pero me surge este escalon:


si se decide desarrollar un formulario sin ayuda de kumbia, como puedo validar este, es decir revice el ejemplo de XGRILLA pero en ningun lado veo q validen la informacion o el activerecord realiza esta validacion interna o si alguien tiene un ejmplo q me pase se lo agradezco

Comentarios

  • edited 6:02
    Para eso están los métodos before_ACTION, donde ACTION representa la acción que vas a realizar o también puedes validar después de realizar la acción con los métodos after_ACTION.

    Ejemplos:
    before_save()
    after_save()
    before_update()
    after_update()

    PD: Por cierto, en el libro de kumbia hablan de todos estos métodos, te recomiendo que le eches una mirada.
  • edited 6:02
    estos metodos desde donde se controlan?, en el modelo o en el controlador, puedes enviarme algun ejemplo que valide la informacion recogida en un formulario.

    Gracias
  • edited 6:02
    Estos métodos los manejas desde el controlador, ahora mismo no te puedo enviar un ejemplo porque estoy en la oficina, si alguien tiene algún ejemplo a la mano por favor colaboreme y envíelo al correo de Cordal y jfonseca3000, también pueden revisar el grupo en google de Kumbia, ahí encontraran varios ejemplos.


    PD: Cuando llegue a mi casa les envío algún ejemplo.
  • edited 6:02
    Ok, gracias Miky por tu pronta respuesta
  • edited 6:02
    14.8.7 before_save
    Es llamado justo antes de realizar el proceso de guardar cuando se llama el método save en
    un modelo. Se puede cancelar la acción que se esté realizando si este método devuelve la
    palabra 'error'.

    pero segun el libro estos metodos son llamados desde el modelo no desde el controlador
    class Modulos extends ActiveRecord {
    
    	function before_save(){  
            ...
            validar
            ...
            }
    
    }
    
  • edited 6:02
    <!-- s:? --><img src="{SMILIES_PATH}/icon_confused.gif" alt=":?" title="Confused" /><!-- s:? --> ups, que error, disculpenme, estos metodos son en el Modelo porque pertenecen a los callbacks de los ActiveRecord.

    PD: A todos nos puede pasar, jeje <!-- s:P --><img src="{SMILIES_PATH}/icon_razz.gif" alt=":P" title="Razz" /><!-- s:P -->
  • Puedes hacer como dice el amigo jfonseca3000 pero esta técnica en cierta manera consume muchos recurso del lado servidor OJO no quiere decir que este mala solo es mi apreciación yo te recomendaria validar en el cliente con javascrip y puedes utilizar las lib que trae kumbia para hacer mas vistozo esas validaciones...

    Éxitos...
  • edited 6:02
    deivinsontejeda gracias x tu explicacion, podrias ayudarme con algun ejemplo q tengas. [/code]
  • Ok dejame ver que te consigo y te lo lo paso....
  • edited 6:02
    hola alguien me puede colaborar con un ejemplo de validacion o darme links donde conseguir la documentacion gracias
  • edited 6:02
    Cuando tengas los ejemplos postealos por el foro, ya que yo tambien lo espero.
  • codigo de la vista

    &lt;? content&#40;&#41; ?&gt;
    &lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot;&gt;
    function validar&#40;form&#41;&#123;
    if &#40;form&#46;id_modulo&#46;value == &quot;&quot;&#41;&#123;
       alert&#40;&quot;Por favor, ingrese el codigo del modulo&quot;&#41;;
       form&#46;id_modulo&#46;focus&#40;&#41;;
       return;
       &#125;else&#123;
            if &#40;form&#46;nombre_modulo&#46;value == &quot;&quot;&#41;&#123;
    	       alert&#40;&quot;Por favor, ingrese el nombre del modulo&quot;&#41;;
    	       form&#46;nombre_modulo&#46;focus&#40;&#41;;
    		   return;
    		   &#125; else &#123;
    			      if &#40;form&#46;pag_principal&#46;value == &quot;&quot;&#41;&#123;
    					 alert&#40;&quot;Por favor ingrese la pagina principal del modulo&quot;&#41;;
    					 form&#46;pag_principal&#46;focus&#40;&#41;;
    					 &#125; else &#123;
    					        form&#46;submit&#40;&#41;;
    						    &#125;
    				  &#125;			
    		&#125;
    &#125;
    &lt;/script&gt;
    &lt;?= form_tag&#40;'modulos/insert'&#41; ?&gt;
    &lt;table&gt;
    	&lt;tr&gt;
    		&lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;
    			&lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
    				&lt;tr&gt;
    					&lt;td width=&quot;36&quot;&gt;&lt;?= link_to&#40;'modulos/index','title&#58; Regresar', 'text&#58; '&#46;img_tag&#40;'codex/redo&#46;png','border&#58; 0'&#41;&#41;?&gt;&lt;/td&gt;
    					&lt;td align=&quot;left&quot;&gt;Nuevo Modulo del Sistema&lt;/td&gt;
    				&lt;/tr&gt;
    			&lt;/table&gt;
    		&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td&gt;id Modulo&#58;&lt;/td&gt;
    		&lt;td&gt;&lt;?= text_field_tag&#40;&quot;id_modulo&quot;,&quot;value&#58; &quot;, &quot;size&#58; 30&quot;,&quot;maxlength&#58; 2&quot;&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td&gt;Nombre Modulo&#58;&lt;/td&gt;
    		&lt;td&gt;&lt;?= text_field_tag&#40;&quot;nombre_modulo&quot;,&quot;value&#58; &quot;, &quot;size&#58; 30&quot;,&quot;maxlength&#58; 30&quot;&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td&gt;Pagina Principal&#58;&lt;/td&gt;
    		&lt;td&gt;&lt;?= text_field_tag&#40;&quot;pag_principal&quot;,&quot;value&#58; &quot;, &quot;size&#58; 30&quot;,&quot;maxlength&#58; 30&quot;&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td colspan=&quot;2&quot; align=&quot;right&quot;&gt;&lt;?= button_tag&#40;&quot;Guardar&quot;,&quot;onclick&#58; validar&#40;this&#46;form&#41;&quot;&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    &lt;/table&gt;
    &lt;? end_form_tag&#40;&#41; ?&gt;
    

    y el controlador de esta forma
    class ModulosController extends ApplicationController &#123;
     
    public $template = &quot;templatecodex&quot;; 
    
    function add&#40;&#41;&#123;
    	
    &#125;
    
    function insert&#40;&#41;&#123;
    	$id = $this-&gt;request&#40;&quot;id_modulo&quot;&#41;;
    	if&#40;$this-&gt;Modulos-&gt;find_first&#40;&quot;id_modulo= '&quot;&#46;$id&#46;&quot;'&quot;&#41;&#41; &#123;
    	  Flash&#58;&#58;error&#40;&quot;El Codigo del Modulo Ya Existe&quot;&#41;;
    	  return $this-&gt;route_to&#40;&quot;action&#58; add&quot;&#41;;
    	  &#125; else &#123;
    	  
    	  		 &#125;
    &#125;
    


    Pero se q Kumbia debe tener ua mejor forma para realizar esta validacion alguien puede ayudarme ????? GRACIAS
  • jejeje revisando los foros encontre q la opcion de required en los form_remote_tag tambien es aplicable a los form_tag cosa q no sabia es decir:


    vista:


    <?= form_tag("modulos/insert","required: id") ?>
    <?= text_field_tag("id","value: ", "size: 30","maxlength: 2") ?>
    <? end_form_tag() ?>



    con eso se ahorra la funcion javascript
  • edited 6:02
    Hola,

    También puedes llamar a cualquier funcion de validación ubicada en el archivo validations.js, usando los eventos onblur, onchange, onsubmit, etc. de javascript sobre el o los elementos que quieras validar.

    Esas funciones devuelven true si pasa la validacion y false si las rechaza.

    Saludos!
  • ok gracias x la informacion tienes algun ejemplo q me colabores para orientarme.

    asi queda mi vista:
    &lt;? content&#40;&#41; ?&gt;
    &lt;?= form_tag&#40;&quot;modulos/insert&quot;,&quot;required&#58; codigo_modulo,nombre_modulo,pag_principal&quot;&#41; ?&gt;
    &lt;table&gt;
    	&lt;tr&gt;
    		&lt;td colspan=&quot;2&quot; align=&quot;center&quot;&gt;
    			&lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
    				&lt;tr&gt;
    					&lt;td width=&quot;36&quot;&gt;&lt;?= link_to&#40;'modulos/index','title&#58; Regresar', 'text&#58; '&#46;img_tag&#40;'codex/redo&#46;png','border&#58; 0'&#41;&#41;?&gt;&lt;/td&gt;
    					&lt;td align=&quot;left&quot;&gt;Nuevo Modulo del Sistema&lt;/td&gt;
    				&lt;/tr&gt;
    			&lt;/table&gt;
    		&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td&gt;Codigo Modulo&#58;&lt;/td&gt;
    		&lt;td&gt;&lt;?= textupper_field_tag&#40;&quot;codigo_modulo&quot;,&quot;value&#58; &quot;, &quot;size&#58; 30&quot;,&quot;maxlength&#58; 2&quot;&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td&gt;Nombre Modulo&#58;&lt;/td&gt;
    		&lt;td&gt;&lt;?= textupper_field_tag&#40;&quot;nombre_modulo&quot;,&quot;value&#58; &quot;, &quot;size&#58; 30&quot;,&quot;maxlength&#58; 30&quot;&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td&gt;Pagina Principal&#58;&lt;/td&gt;
    		&lt;td&gt;&lt;?= textupper_field_tag&#40;&quot;pag_principal&quot;,&quot;value&#58; &quot;, &quot;size&#58; 30&quot;,&quot;maxlength&#58; 30&quot;&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    	&lt;tr&gt;
    		&lt;td colspan=&quot;2&quot; align=&quot;right&quot;&gt;&lt;?= submit_tag&#40;'Guardar'&#41; ?&gt;&lt;/td&gt;
    	&lt;/tr&gt;
    &lt;/table&gt;
    &lt;? end_form_tag&#40;&#41; ?&gt;
    

    Pregunto si yo quiero validar q al ingresar un valor no se repita en la base de datos, como puedo hacerlo.

    Anteriormente cuando usaba la funcion javascript creaba un campo de texto oculto donde colocaba true o false si estaba repetido en la BD, la confirmacion la hacia x medio de ajax, pero aqui no se en q parte puedo ingresarlo para q cuando envien el formulario se tenga en cuenta esto.
Sign In or Register to comment.