Je veux utiliser quelques ajax, mais je ne sais pas comment utiliser la même fonction que setNoRender () dans zend framework 2 pour la désactiver pour l’affichage du rendu.
Comment désactiver l'affichage du rendu dans zend framework 2?
Pour désactiver votre vue:
public function myactionAction()
{
// your code here ...
return false;
}
"return false" désactive la vue et non la mise en page! Pourquoi? parce que les types acceptés sont:
donc "false" désactive la vue.
Pour désactiver la présentation et la vue, retournez un objet de réponse:
public function myactionAction()
{
// your code here ...
return $this->response;
}
Pour désactiver la mise en page:
public function myactionAction()
{
// your code here ...
$view = new ViewModel();
$view->setTerminal(true);
return $view;
}
Si vous utilisez JSON, examinez la JsonStrategy
de la vue et renvoyez une JsonModel
à partir de votre contrôleur. Voir cet article .
Sinon, vous pouvez renvoyer une Response
à partir de votre contrôleur et la couche de vue entière est ignorée:
public function testAction()
{
$response = $this->getResponse();
$response->setStatusCode(200);
$response->setContent('foo');
return $response;
}
Propre et solution simple pour ce faire
public function testAction()
{
$data = array(
'result' => true,
'data' => array()
);
return $this->getResponse()->setContent(Json::encode($data));
}
Détails: http://cmyker.blogspot.com/2012/11/zend-framework-2-ajax-return-json.html
J'ai trouvé une réponse.
Bien que $this->layout()->getLayout()
renvoie le nom/chemin de la mise en page nouvellement sélectionnée ... La mise en page ne change pas avec les commandes suivantes ...
dans un contrôleur
$this->getLocator()->get('view')->layout()->setLayout('layouts/ajax.phtml');
$this->getLocator()->get('view')->layout()->setLayout('ajax');
$this->getLocator()->get('view')->layout()->disableLayout();
dans une vue fichier PHTML
$this->layout()->setLayout('layouts/ajax.phtml');
$this->layout()->setLayout('ajax');
$this->layout()->disableLayout();
...
use Zend\View\Model\JsonModel;
public function myAction() {
...
$view = new JsonModel($myArray);
$view->setTerminal(true);
return $view;
}
$ view = new ViewModel (); $ view-> setTerminate (true);