Foros del Web » Programando para Internet » PHP » Zend »

Que la vista genere contenido xml y no html (Zend F)

Estas en el tema de Que la vista genere contenido xml y no html (Zend F) en el foro de Zend en Foros del Web. Hola ! Como puedo hacer para que la salida de un controlador sea un archivo xml ?, no importa la extension, solo que el contenido ...
  #1 (permalink)  
Antiguo 13/12/2008, 16:57
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Que la vista genere contenido xml y no html (Zend F)

Hola !

Como puedo hacer para que la salida de un controlador sea un archivo xml ?, no importa la extension, solo que el contenido sea puro xml ya que si hago un echo directamente en el controlador sale pero envuelto en <body></body>

alguna idea ?
  #2 (permalink)  
Antiguo 13/12/2008, 17:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Que la vista genere contenido xml y no html (Zend F)

Si mal no recuerdo la vista tiene un método disableLayout() para que no renderee la vista principal, después puedes usar el header para general el XML e imprimir en una plantilla el XML.

Saludos.
  #3 (permalink)  
Antiguo 14/12/2008, 08:02
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Que la vista genere contenido xml y no html (Zend F)

Cita:
Iniciado por lisandro Arg Ver Mensaje
Hola !

Como puedo hacer para que la salida de un controlador sea un archivo xml ?, no importa la extension, solo que el contenido sea puro xml ya que si hago un echo directamente en el controlador sale pero envuelto en <body></body>

alguna idea ?
Mmm.... no debería ser transparente? si modificas el layout para que todo sea XML, no te debería funcionar igual (usando la vista, no haciendo echo's en el controller)?

De lo contrario puedes hacer lo que dice GatorV
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #4 (permalink)  
Antiguo 14/12/2008, 08:05
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Que la vista genere contenido xml y no html (Zend F)

Hola GatorV, puse en el init $this->_helper->layout->disableLayout() pero no funcionó.

Encontré este link http://framework.zend.com/manual/en/....contextswitch de la documentación que parece se el correcto para este tema pero no logro hacerlo funcionar.

Este es mi controlador:
Código PHP:
<?php

    
class AdminadhocController extends Zend_Controller_Action
    
{
        
        public function 
init()
        {
            
$contextSwitch $this->_helper->getHelper('contextSwitch');
            
$contextSwitch->addActionContext('index''xml')
                            ->
setSuffix('xml''xml',true)
                            ->
initContext('xml'); // 'xml' para no tener que pasar el contexto por url Ej. /controlador/accion/format/xml
            
        
}
        
      
            public function 
indexAction()
            {
               
                
$xml '<note>
                    <to>Tove</to>
                    <from>Jani</from>
                    <heading>Reminder</heading>
                    <body>Dont forget me this weekend!</body>
                    </note>'
;
                
$this->view->xml $xml;
          
            }
    }
Aparentemente ->setSuffix('xml', 'xml',true) no está funcionando porque se ejecuta la vista index.xml.phtml y segun entiendo deberia ser xml.xml

La vista:
Código PHP:
<?echo $this->xml?>
--------------

Tambén intente haciendo un
->setHeader('Content-Type', 'text/xml;', true)
pero el archivo en vez de mostrarse en el navegador éste intenta descargarse

Alguna idea ?
  #5 (permalink)  
Antiguo 14/12/2008, 08:11
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Que la vista genere contenido xml y no html (Zend F)

Leyendo lo de Enrique me acordé de mostrarles la salida

Cita:
<head><link href="chrome://firebug/content/highlighter.css" type="text/css" rel="stylesheet"></head><body><note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
Dont forget me this weekend!</note></body>
  #6 (permalink)  
Antiguo 14/12/2008, 08:23
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Que la vista genere contenido xml y no html (Zend F)

ohooo ahora funciona !

Habia utilizado disableLayout() pero me faltaba "después puedes usar el header para general el XML" o sea ->setHeader('Content-Type', 'text/xml;', true) al mismo tiempo.

Espero poder hacer el setHeader en el controlador, pero creo que ya lo tengo, gracias por la ayuda !!, ahora voy a poder descansar unas horas el domingo :)
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 14:42.