Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

duda acerca de isXmlHttpRequest()

Estas en el tema de duda acerca de isXmlHttpRequest() en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos días gente! Bueno a ver si me pueden ayudar con esta duda. Estoy trabajando en base a Zend Framework quiero hacer lo siguiente. En ...
  #1 (permalink)  
Antiguo 29/05/2009, 06:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Buenos días gente! Bueno a ver si me pueden ayudar con esta duda.
Estoy trabajando en base a Zend Framework quiero hacer lo siguiente.

En base a un combobox que tenga, dependiendo de la selección esto me genere una lista con una información, Mi estructura o lo poco que tengo es:

class forms_SelectProductoForm extends Zend_Form
{

public function __construct($options = null)
{
parent::__construct($options);

$traduccion = new Zend_Translate('array', APPLICATION_PATH .'/configs/lang_es.php', 'es');
Zend_Form::setDefaultTranslator($traduccion);



$tipo = new Zend_Dojo_Form_Element_ComboBox('tipo',array('id' => 'tipo','autocomplete' => true,'style' => 'width:10em;'));
$tipo->setRequired(true)
->setmultiOptions(
array('0'=>'Proyecto',
'1'=>'Tarea',
'2'=>'Proceso',
))
->addValidator('NotEmpty');



$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Buscar');

$this->addElements(array($tipo,$submit));

}
}

esto se lo paso al Predispatch con:
$formo = new forms_SelectProductoForm();
$this->view->formo = $formo;

y ok funciona perfecto, pero ahora como yo hago para hacer que eso que seleccione sea un isXmlHttpRequest() y como hago la acción para que bueno en el controlador me lo reconozca como AJAX y poder devolver la respuesta sin refrescar la página, de verdad es como muy sencillo pero no sé como agregarle ese header a ese form para que sea AJAX, por favor si me pueden ayudar o me expliquen de la forma más sencilla ya que no entiendo mucho GRACIAS de verdad

ACLARATORIA: estoy usando DOJO de forma nativa, ya que como viene incluido de una vez en Zend, bueno quiero hacerlo de la forma más sencilla GRACIAS

Última edición por jam1138; 29/05/2009 a las 13:09
  #2 (permalink)  
Antiguo 29/05/2009, 16:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: duda acerca de isXmlHttpRequest()

La clase de Dojo ya agrega el header adecuado, por lo que solo faltaria que agregaras o que iniciaras el ContextSwitch en tu Controller para cambiar el tipo de contenido cuando detecte que es un request AJAX.

Saludos.
  #3 (permalink)  
Antiguo 30/05/2009, 11:50
 
Fecha de Ingreso: mayo-2009
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: duda acerca de isXmlHttpRequest()

Hola GatorV, ok he probado trabajando con esto último que me dijiste pero nada q me funciona, de verdad si me pudieras explicar todo detallado, es que soy muy novato, y tengo muchas dudas de como hacerlo.

Muchas gracias
  #4 (permalink)  
Antiguo 01/06/2009, 09:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: duda acerca de isXmlHttpRequest()

Pues simplemente es agregar el contextSwitch para la accion que quieras te de una respuesta en JSON, por ejemplo:
Código php:
Ver original
  1. class fooController extends Zend_Controller_Action {
  2.         public function init() {
  3.                  $contextSwitch = $this->_helper->getHelper('contextSwitch');
  4.                  $contextSwitch->addActionContext('list', 'json')
  5.                       ->initContext();
  6.         }
  7.  
  8.         public function listAction() {
  9.                $this->view->data = $data;
  10.         }
  11. }

Con eso simplemente si haces un request y agregas en los parámetros el /format/json/ tu respuesta será en JSON.

Saludos.
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 02:18.