zend tutorial skeleton framework docs create zend-framework2

zend framework2 - tutorial - Deshabilitando la vista con en acción en ZF2



zend framework download (9)

función pública indexAction () {

$news = $this->em->getRepository(''Admin/Model/News''); foreach ($news->findAll() as $new) { $res = $this->getResponse()->setContent($new->toXml()); } return $res; }

Estoy teniendo problemas para desactivar la vista en ZF2 $this->_helper->viewRenderer->setNoRender(); or (true) $this->_helper->viewRenderer->setNoRender(); or (true) sin suerte como siempre dice allí.

PHP Fatal error: Call to a member function setNoRender() on a non-object in ../module/Location/src/Location/Controller/LocationController.php on line 190


El ZF2 está en gran medida en desarrollo y no se puede garantizar de la manera que funciona ahora, será así cuando ZF2 alcance un estado estable.

Sin embargo, la nueva capa de vista de Zend / Mvc se fusionó recientemente, lo que brinda la opción de devolver modelos de vista con información relacionada con la vista para renderizar vistas. Para deshabilitar la visualización de vistas, puede acortar el envío devolviendo una respuesta directamente, por lo que la vista no se procesa en absoluto.

public function somethingAction () { // Do some intelligent work return $this->getResponse(); }


He encontrado una solución simple para deshabilitar el diseño. En mi ajaxAction

public function ajaxAction() { if ( $this->getRequest()->isXmlHttpRequest() ) { $this->layout( ''layout/ajax-layout'' ); } }

Y en /module/Application/view/layout/ajax-layout.phtml

<?php echo $this->content; ?>


Para deshabilitar la vista por completo, desde dentro de una acción del controlador, debe devolver un objeto de Respuesta:

<?php namespace SomeModule/Controller; use Zend/Mvc/Controller/ActionController, Zend/View/Model/ViewModel; class SomeController extends ActionController { public function someAction() { $response = $this->getResponse(); $response->setStatusCode(200); $response->setContent("Hello World"); return $response; } }

Para deshabilitar el diseño y simplemente representar la plantilla de modelo de vista de esta acción, haría esto:

public function anotherAction() { $result = new ViewModel(); $result->setTerminal(true); return $result; }


Puede hacerlo usando el modelo de consola, o matar la ejecución arbitrariamente.

<?php namespace SomeModule/Controller; use Zend/Mvc/Controller/ActionController; use Zend/View/Model/ConsoleModel; // if use ConsoleMode use Zend/View/Model/JsonModel; // if use JSON class SomeController extends ActionController { public function someAction() { return new ConsoleModel(array( ''message'' => ''Hello World'', )); } // Json Method public function jsonAction() { return new JsonModel(array( ''message'' => ''Hello World'', )); } // This is really exaggerated, but it is quite effective. public function killAction() { echo ''Hello World''; exit; } }

En uso de la vista: some.phtml

<?php echo $message;

json.phtml

<?php echo $message;


Simplemente regrese '''' en el Método y no se cargará automáticamente la plantilla de Vista

public function goAction() { return ''''; }


Yo diría que acaba de desactivar el diseño solamente

$viewModel = new ViewModel(); $viewModel->setTerminal(true); return $viewModel;

y haz eco de tu json en tus archivos de vista ...


$this->_helper no está disponible en ZF2 pero para deshabilitar una vista puede hacer:

$this->broker("ViewRenderer")->setNoRender();

o

$this->broker->load("ViewRenderer")->setNoRender();


public function testAction() { return false; }

simplemente devuelve falso.