Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-04-2007 15:01:58

jbarthe
Membre
Lieu: Montpellier
Date d'inscription: 01-04-2007
Messages: 14
Site web

[MVC] Structure MVC d’une application admin/consult

Bonjour,

Je voudrais lancer un petit débat quant à l’organisation de la structure MVC dans le cadre d’une application avec administration et consultation.

Le wiki de Zend propose une solution basée sur les modules. Chacun de ces modules offre un ou plusieurs contrôleurs de consultation, et d’administration.

L’inconvénient majeur de cette technique est de mélanger contrôleurs d’administration et de consultation par module. On pourrait y préférer une structure Administration/Module/Contrôleur/Action. Mais ceci n’est à ma connaissance pas prévue dans le Zend Framework. Peut être qu’un plugin permettrait d’étendre les fonctionnalités du contrôleur ?

J’avais, dans mes premiers essais avec le Zend Framework, sacrifié la gestion des modules, au sens application. J’avais donc un module pour gérer l’administration et l’autre la consultation, et enfin contrôleur + action. Mais je me rends compte que cette solution n’est pas idéale.

Celle de Zend offre une meilleure approche, mais je me demande du coup laquelle est la vôtre ? Si vous avez des liens proposant d'autres solutions que celle de Zend, je suis preneur wink

Hors ligne

 

#2 25-04-2007 11:41:13

jbarthe
Membre
Lieu: Montpellier
Date d'inscription: 01-04-2007
Messages: 14
Site web

Re: [MVC] Structure MVC d’une application admin/consult

Euh... Au vue du manque de réponse, j'ai dit une connerie ? Ou ma question n'est pas claire, pas pertinente ? smile

Dernière modification par jbarthe (25-04-2007 11:41:58)

Hors ligne

 

#3 25-04-2007 12:00:02

Isilgawen
Membre
Lieu: Limoges
Date d'inscription: 23-03-2007
Messages: 106

Re: [MVC] Structure MVC d’une application admin/consult

Je n'ai pas cette problèmatique vu que je n'ai pas de backoffice donc je me suis pas posé la question smile
Mais à première vue la solution d'un module backoffice et un frontoffice me parait bonne, pourquoi trouves tu cette solution pas idéale ?

Hors ligne

 

#4 25-04-2007 12:16:41

jbarthe
Membre
Lieu: Montpellier
Date d'inscription: 01-04-2007
Messages: 14
Site web

Re: [MVC] Structure MVC d’une application admin/consult

Pour être plus précis, je vais vous donner la structure actuelle de mon appli (ça nous fera une base de critique wink) :

Code:

/app
    /config (contient les fichiers de configuration de l'application)
    /controllers
        /backend (module de controlleurs pour la partie admin)
        /frontend (module de controlleurs pour la partie consult)
    /models
    /views

Et donc dans mon index.php je charge les modules comme ceci :

Code:

$controller->setControllerDirectory(array(
    'admin' => BASE_DIR.'/app/controllers/backend',
    'default' => BASE_DIR.'/app/controllers/frontend')
);

Ceci ne me convient pas vraiment car d'une part j'ai sacrifié la gestion des modules pour gérer une application, aussi je perd un niveau. En effet on considère plus un module comme le module Forum par exemple.
Le top pour moi aurait été un système comme symfony avec une découpe en :
Application/Module/Controlleur/Action

Je n'ai pas eu le temps de me pencher sur le Zend_Controller_Plugin_Abstract mais peut être qu'il permet de résoudre ce problème. Ou simplement en créant son propre contrôleur héritant de Zend_Controller_Action.

Le système présenté dans le wiki de Zend n'est pas mal du tout (cf. lien ci-dessus), mais j'ai l'habitude de séparer la partie admin et consult en 2 dossiers, ce qu'ils n'ont pas choisi.

Voilà, j'espère que ce sujet devient plus clair.

Dernière modification par jbarthe (25-04-2007 12:17:42)

Hors ligne

 

#5 25-04-2007 16:30:38

dinoxyz
Membre
Date d'inscription: 31-03-2007
Messages: 70

Re: [MVC] Structure MVC d’une application admin/consult

Justement en ce moment ce sont les questions que je me pose comment arriver à découper mon application en deux parties.

Code:

/admin(backend)
    /controllers
    /models
    /views
/default(frontend)
    /controllers
    /models
    /views
/config (contient les fichiers de configuration de l'application)
/library
index.php

Comme ça, on peut rajouter d'autres modules ou les récupérer pour d'autres programmes, vous en pensez quoi ?

Dernière modification par dinoxyz (25-04-2007 16:30:48)


Système : Ubuntu (Linux)
Version : PHP 5.2.1
Mode debug actif

Hors ligne

 

#6 25-04-2007 18:18:51

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [MVC] Structure MVC d’une application admin/consult

Dans mes applis, si j'ai une admin et un front, je n'ai qu'un seul modèle commun aux 2 sites.

Ca me parrait super important pour qu'ils papotent ensemble sans duppliquer des tonnes de code.
Par contre effectivement les controlleurs et les views sont spécifiques.

J'ai une arbo un peu "java like" qui ressemble à ça :

Code:

/admin
    index.php
    /PHP-INF
         /controlleurs
         /vues
/front
    index.php
    /PHP-INF
         /controlleurs
         /vues
/include
/model
/tests

et ma conf apache interdit l'accès à PHP-INF

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#7 26-04-2007 13:58:30

jbarthe
Membre
Lieu: Montpellier
Date d'inscription: 01-04-2007
Messages: 14
Site web

Re: [MVC] Structure MVC d’une application admin/consult

Merci pour ta réponse Philippe, effectivement ça parait être le plus simple et aussi le plus adapté smile

En fait, je voulais éviter d'avoir 2 index.php, car du coup tu dois initialiser Zend et ses composants sur 2 fichiers ? Néanmoins, ça permet de garder le contrôle sur chaque application et d'initialiser que les composants nécessaires à chaque application, ce qui est tout de même appréciable.

Le défaut de cette technique, c'est qu'il ne faut surtout pas oublier d'interdire l'accès à "PHP-INF". Et du dois gérer par apache, l'accès à nomdedomaine.com au dossier front, et nomdedomaine.com/admin/ au dossier admin, n'est ce pas ?

On peut j'immagine avoir une structure de ce style là :

Code:

/apps
    /backend
        /controllers
        /views
        ...
    /frontend
        /controllers
        /views
        ...
/library
/model
/tmp
/www
    /backend
        index.php
        ...
    /frontend
        index.php
        ...
OU
(Dans cette technique aucun controlleur de l'application frontend ne peut s'appeler "admin".
Et il faut rajouter ceci "RewriteRule  ^(admin).*  - [L]" dans le fichier .htaccess pour rendre accessible admin)
/www
    /admin
        index.php
        ...
    index.php
    ...

Qu'en pensez vous ?

Au passage, deux liens intéressants sur ce sujet :
Choosing Your Application's Directory Layout
Configuring Your URL Rewriter

Dernière modification par jbarthe (27-04-2007 12:12:29)

Hors ligne

 

#8 02-05-2007 23:28:06

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [MVC] Structure MVC d’une application admin/consult

Je reprend une peu la même idée que  philippe,
Sauf que je n'ai pas encore rejoin les parties communes ( conf, modèle, etc..). Il y'a donc quelques doublons.


Projet
    adm.projet.com
        controllers
        models
        views
    www.projet.com
        controllers
        models
        views


Société : Direct Info Service

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages