Dynamic-Mess.com


"The world is a dynamic mess of jiggling things..."

Zend Framework 2 : le module de base

Article posté le 05-06-2014 dans la catégorie PHP

Attention, le contenu cet article est peut-être obsolète!

Voici comment mettre en place la base de votre module sous Zend Framework 2 (que nous appellerons ici ZF2 pour des raisons de commodités).

Le module est l'élément de base de votre développement sous ZF2 : c'est ici que se trouveront tous vos fichiers (à l'exception de ceux qui seront accessibles au public, qui eux se trouvent dans le dossier "public").

1- Arborescence

Voici donc l'arborescence ainsi que les fichiers que vous devez créer pour votre module de base :

Arborescence de base du module

Comme vous pourrez le constater à l'usage, la mise en place d'un nouveau module commence par la création de tous ces répertoires ainsi que de certains fichiers obligatoires avec du code dedans. Cela est un peu lourd, mais c'est un passage obligé. Avant de vous expliquer cette aroborescence, un petit rappel sur les règles de nommage s'impose.

Conventions de nommage :

Explications de l'arborescence :

2- Fichier Module.php

Comme expliqué plus haut, il s'agit d'une classe intégrant les fonctionnalités du modules ainsi que leur configuration (donc pas la configuration du module en lui-même qui se trouve ailleurs).

Nous travaillons dans l'espace de nom Biblio.

Ici nous devons paramétrer deux choses pour notre exemple :

Le système de chargement des classes 

ZF2 en propose 2 :

Le chargement du fichier de configuration

Il faut implémenter la fonction getConfig déclarée dans l'interface ConfigProviderInterface.

Voici le contenu de notre classe :

namespace Biblio;
use ZendModuleManagerFeatureAutoloaderProviderInterface;
use ZendModuleManagerFeatureConfigProviderInterface;
 
class Module implements AutoloaderProviderInterface  
{  
    public function getAutoloaderConfig()  
    {  
        return array(  
            'ZendLoaderClassMapAutoloader' => array(  
                __DIR__ . '/autoload_classmap.php',  
            ),  
        );  
    }
    
    public function getConfig()  
    {  
        return include __DIR__ . '/config/module.config.php';  
    }
}
?>

Note : si vous aviez voulu utiliser le StandardAutoloader, voici ce qui l'aurait fallu rajouter à la fonction getAutoLoaderConfig() :

'ZendLoaderStandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ),
            ),

Bien ! Pour notre exemple, nous allons juste créer une page d'accueil pour notre module. Nous devons donc créer le contrôleur et la vue.

3- Le contrôleur

Dans le fichier IndexController.php mentionné dans l'arborescence, nous devons créer une classe qui hérite de la classe abstraite AbstractActionController. Nous ne déclarons qu'une seule méthode pour l'instant : indexAction.

namespace BiblioController;  
 
use ZendMvcControllerAbstractActionController;  
 
 
class IndexController extends AbstractActionController  
{  
    public function indexAction()  
    {  
        return array();  
    } 
}
?>

 

4- La vue

Dans le dossier index du répertoire view : créez un fichier nommé index.phtml (comme dans l'aborescence en haut de cette page). Placez du texte à l'intérieur et enregistrez.

5- L'autoload_classmap

Ici, comme expliqué plus haut, nous retournons un tableau contenant deux colonnes :

return array(
    'BiblioControllerIndexController' =>
    __DIR__ . '/src/Biblio/Controller/IndexController.php',
);
?>

 

6- Le fichier de configuration

Enfin, avant de pouvoir tester en tapant l'URL monsite/biblio, vous devez remplir votre fichier de configuration module.config.php. Ici on trouvera tous les paramétrages du module : définition de l'espace de nom, routes et contrôleurs associés, vues à appeler...

return array(
    'controllers' => array(
        'invokables' => array(
            'BiblioControllerIndex' =>
            'BiblioControllerIndexController'
        ),
    ), // Fin controlleur
    'view_manager' => array(
        'template_map' => array(  
            'biblio/index/index' => 
         __DIR__ . '/../view/biblio/index/index.phtml', 
        ),
        'template_path_stack' => array(
            'biblio' => __DIR__ . '/../view',
        ), // fin template path stack
    ), // Fin view manager
    'router' => array( 
        'routes' => array( 
            'biblio' => array( 
                'type'    => 'Literal',  
                'options' => array(  
                    'route'    => '/biblio',
                    'defaults' => array(  
                        '__NAMESPACE__' => 'BiblioController',
                        'controller'    => 'Index', (1),
                        'action'        => 'index', (2) 
                    ),  
                ), 
                'verb' => 'get', 
                'may_terminate' => true, 
            ), 
        ), 
    ),// Fin router
);
?>

Cet article vous a plu? Découvrez d'autres articles


Tweet
comments powered by Disqus