web-dev-qa-db-fra.com

Comment désactiver la vue de rendu dans zend framework 2?

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?

16
Tai T
  • 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:

  • ViewModel
  • tableau
  • nul

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;
    }
    
56
Blanchon Vincent

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;
}   
16
Rob Allen

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

9
Cmyker

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();
3
Svyatoslav Tretyak
...
use Zend\View\Model\JsonModel;

public function myAction() {
    ...

    $view = new JsonModel($myArray);
    $view->setTerminal(true);
    return $view;
}
0
Killan

$ view = new ViewModel (); $ view-> setTerminate (true);

0
Kdecom