A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

4.17. Stratégies de rendu de vue

Une stratégie de rendu détermine comment la page sera affichée. Par défaut, pour produire la page HTML, la vue .phtml est rendu à l'aide de la classe PhpRenderer située dans le namespace Zend\View\Renderer. Cette stratégie fonctionne bien dans 99% des cas. Mais parfois, vous devrez peut-être renvoyer autre chose, par exemple, une réponse JSON ou une réponse de flux RSS.

Une réponse au format JSON est généralement renvoyée lorsque vous implémentez une solution type API (Application Programming Interface). L'API est utilisée pour récupérer certaines données dans un format lisible par machine. Une réponse au format flux RSS est généralement utilisée pour publier des informations fréquemment modifiées, telles que des articles de blog ou des actualités.

Ainsi, ZF3 fournit trois stratégies de rendu de vue supplémentaires :

Par exemple, voyons comment utiliser JsonStrategy pour renvoyer une réponse JSON à partir d'une action du contrôleur.

D'abord, vous devez déclarer la stratégie dans le fichier de configuration module.config.php :

<?php
return [
    //...
    
    'view_manager' => [
        //...
        
        'strategies' => [
            'ViewJsonStrategy',
        ],
    ],
];

Ensuite renvoyez un JsonModel (au lieu de l'habituel ViewModel) depuis la méthode d'action de votre controleur :

namespace Application\Controller;
 
use Zend\Mvc\Controller\ActionController;
use Zend\View\Model\JsonModel;
 
class IndexController extends ActionController
{
    public function getJsonAction()
    {
        return new JsonModel([
            'status' => 'SUCCESS',
            'message'=>'Here is your data',
            'data' => [
                'full_name' => 'John Doe',
                'address' => '51 Middle st.'
            ]
        ]);
    }
}

Si vous ouvrez cette page dans votre navigateur, vous verrez la réponse JSON :

{'status':'SUCCESS', 'message':'Here is your data', 'data':{'full_name:'John Doe', 'address':'51 Middle st.'}}

Top