Agregar Ajax para buscar una descripcion

De CidesaWiki

Saltar a navegación, buscar
  <?php echo javascript_include_tag('ajax') ?>
Luego ubicar dentro del _edit_form, la caja de texto donde se escribira el código al cual le quiero buscar la descripción, por ejemplo en el formulario Registro de Articulos (Almregart) necesito que al tipear el código del ramo se muestre la descripcion del mismo, en este caso dentro de la caja de texto del codigo del ramo debemos programar el evento onBlur (perder el foco) para que ejecute un procedimiento que busque en la base de datos la descripción correspondiente y la pinte en la vista de forma inmediata. Para ello la caja de texto del código del ramo queda de la siguiente manera
  <?php $value = object_input_tag($caregart, 'getRamart', array (
  'size' => 20,
  'control_name' => 'caregart[ramart]',
  'maxlength' => 6,    
  'onBlur'=> remote_function(array(
			  'url'      => 'almregart/ajax',  			   
			  'complete' => 'AjaxJSON(request, json)',
  			  'with' => "'ajax=1&cajtexmos=nomram&cajtexcom=caregart_ramart&codigo='+this.value"
			  )),    
)); echo $value ? $value : ' ' ?> 
En el evento onBlur se usa el remote_function que tiene los siguientes parametros

Estos parametros son necesarios,


Ahora en el archivo actions.class se debe colocar la siguiente función:
  public function executeAjax()
	{
	 $cajtexmos=$this->getRequestParameter('cajtexmos');
     $cajtexcom=$this->getRequestParameter('cajtexcom');
	  if ($this->getRequestParameter('ajax')=='1')
	    {
	  		$dato=CaramartPeer::getDesramo($this->getRequestParameter('codigo'));	  			 
            $output = '[["'.$cajtexmos.'","'.$dato.'",""],["'.$cajtexcom.'","6","c"]]';		 			 	    
	    } 
	    $this->getResponse()->setHttpHeader("X-JSON", '('.$output.')'); 
	    return sfView::HEADER_ONLY;
	}	 

   Esta función se debe colocar igual en el action.class correspondiente, lo unico que se debe cambiar es la instrucción:
           $dato=CaramartPeer::getDesramo($this->getRequestParameter('codigo'));

Aqui se debe llamar a la función que busque en la base de datos la descripción que se quiere mostrar, para este caso se quiere mostrar la descripcion del ramo a partir del código, entonces en la clase CaramartPeer cree el metodo que me hace la busqueda.

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas