Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > MVC
MVC Forum de support sur le développement d'applications de type modèle-vue-contrôleur avec Zend Framework ainsi que vos questions sur les plugins, les helpers etc. Avant de poster -> Cours MVC, FAQ ZF Controller
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2007, 11h32   #1
Invité de passage
 
Inscription : février 2004
Messages : 18
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : février 2004
Messages : 18
Points : 2
Points : 2
Par défaut Modifier l'arborescence MVC

Bonjour

Pour l'utilisation du MVC avec ZF on parle la pluspart du temp d'une arborescence de répertoires comme suit :

/application
........../controllers
........../models
........../views

On initialise ensuite le frontcontroller comme suit :
$frontController->setControllerDirectory('./application/controllers');

Ok mais c'est pas très facile pour déployer des modules basés sur ce MVC. (si on considère par exemple qu'un module serait Article (pour une gestion d'articles) et comporterait son controleur, son model et ses vues).

J'ai vue dans un tutorial, mais je n'arrive plus a mettre la main dessus qu'on peut avoir une arborescence du style :

/application
........../module1
..................../controllers
..................../models
..................../views
........../module2
..................../controllers
..................../models
..................../views
...

Qui me semble beaucoup plus pratique pour déployer des modules génériques.

Qu'en pensez-vous ?

Au passage si quelqu'un connait le tuto qui parle de ce type d'arborescence je suis preneur.
esolarc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 17h28   #2
Invité de passage
 
Inscription : février 2004
Messages : 18
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : février 2004
Messages : 18
Points : 2
Points : 2
J'ai trouvé comment faire pour mettre un tel système en place...

A la méthode :
$frontController->setControllerDirectory();

Vous pouvez passer un tableau de répertoires avec tous vos repertoires controllers des modules ou utiliser la méthode :

$frontController->addControllerDirectory();

pour ajouter chaque répertoire controllers.

Maintenant reste à savoir si les plus expérimentés pensent que c'est une bonne méthode
esolarc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 09h31   #3
Futur Membre du Club
 
Inscription : mai 2007
Messages : 25
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 25
Points : 18
Points : 18
Citation:

$controller = Zend_Controller_Front::getInstance()
->setDefaultModule("agent")
->addModuleDirectory('../app/modules')
//->throwExceptions(true)
->registerPlugin(new Custom_Controller_Plugin_Auth($auth, $acl))
->dispatch();
mes arborescences :

/app

----/modules
-------------/module1/
----------------------/controllers
----------------------/models
-------------/module2/
---------------------/controllers
---------------------/models

----/views
----------/module1
----------/module2
----------header.tpl
----------footer.tpl
----------main.tpl

Je trouve que c'est mieux de regrouper les vus
robin_liu79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 10h31   #4
Invité de passage
 
Inscription : février 2004
Messages : 18
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : février 2004
Messages : 18
Points : 2
Points : 2
Citation:
Envoyé par robin_liu79
$controller = Zend_Controller_Front::getInstance()
->setDefaultModule("agent")
->addModuleDirectory('../app/modules')
//->throwExceptions(true)
->registerPlugin(new Custom_Controller_Plugin_Auth($auth, $acl))
->dispatch();
Merci pour cette solution mais je ne pense pas qu'elle satisfait à mon besoin.

En effet d'après la doc que j'ai lue :
Citation:
...Un plugin est donc une classe dont les méthodes seront appelées a différents moments de la dispatch loop du controlleur frontal...
Or c'est pas exactement ce que je recherche à faire, pour ma part un module est une classe de gestion complète d'une table article par exemple avec le MVC.

Par contre cette solution risque d'être intéresante pour intégrer un parser de templates, enfin si j'ai bien compris son but ;-)
esolarc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 08h48   #5
Invité régulier
 
Inscription : juillet 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 6
Points : 6
Points : 6
Par défaut Une questions sur les modules ?

Bonjour à tous.

Je débute avec Zend et je rencontre une petite problématique. Aprés avoir par courru la documentation de zend sur les modules, je n'arrive toujours pas à les utilisés.

mon arborescence est la suivante :

/application
...../modules
........../module1
..................../controllers
......................../IndexController.php
..................../models
..................../views
........../module2
..................../controllers
..................../models
..................../views
index.php

et je spécifie au FrontController : $front->addModuleDirectory($_SERVER['DOCUMENT_ROOT'].'/application/modules')

Cependant lors l'appel suivant http://localhost/application/module1 j'obtiens une pages blanche sachant que le fichier IndexController de module1 est le suivant :

Code :
1
2
3
4
5
6
7
8
 
class IndexController extends Zend_Controller_Action
 {
 	public function indexAction()
 	{
        echo 'mon module1';
        }
}
Est-on obligé de spécifier setDefaultModule au FrontController ?

PS: si je spécifie $front->setDefaultModule('module1') ce la fonction.

Merci.
Supradiz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 08h54   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Il me semble que le module par défaut est "index", donc si le tien s'appelle "module1" il faut en effet le dire à ZF
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 21h44   #7
Membre confirmé
 
Inscription : septembre 2004
Messages : 519
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 519
Points : 257
Points : 257
Citation:
Envoyé par esolarc Voir le message
J'ai vue dans un tutorial, mais je n'arrive plus a mettre la main dessus qu'on peut avoir une arborescence du style :

/application
........../module1
..................../controllers
..................../models
..................../views
........../module2
..................../controllers
..................../models
..................../views
...
je ne sais pas si ca peut te servir. mais je pense que tu faisais reference a ca:
http://framework.zend.com/manual/fr/...r.modular.html
bibile est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 15h23   #8
Membre confirmé
 
Inscription : septembre 2004
Messages : 519
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 519
Points : 257
Points : 257
petite question sur ca:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docroot/
    index.php
application/
    default/
        controllers/
            IndexController.php
            FooController.php
    blog/
        controllers/
            IndexController.php
        models/
        views/
    news/
        controllers/
            IndexController.php
            ListController.php
        models/
        views/
le dossier public devrait bien etre placé comme ca ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
docroot/
    index.php
    public/
	images/
	scripts/
	styles/
application/
    default/
        controllers/
            IndexController.php
            FooController.php
    blog/
        controllers/
            IndexController.php
        models/
        views/
    news/
        controllers/
            IndexController.php
            ListController.php
        models/
        views/
bibile est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 16h57   #9
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
cf. Rob Allen (public est au même niveau qu'application):
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
zf-tutorial/
    /application
        /controllers
        /models
        /views
            /filters
            /helpers
            /scripts
    /library
    /public
        /images
        /scripts
        /styles
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 17h10   #10
Membre confirmé
 
Inscription : septembre 2004
Messages : 519
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 519
Points : 257
Points : 257
dans ce tuto, on met toute l'appli (meme tout le framework) dans le path du site.
ca permet de le faire sur un mutualisé.
mais dans la doc, c'est ecrit partout de mettre que le bootstrap dans le path du site: http://framework.zend.com/manual/fr/...r.modular.html
l'idee etant de mettre le framework et le reste dans un coin moins accessible du serveur.

d'ou ma question (a moins que je trompe sur ce que je viens d'ecrire): comment positionner le dossier /public/ qui contient les .css, les .js, ....
bibile est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 17h27   #11
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Pourquoi ne pas utiliser le dossier "public" pour mettre le bootstrap en plus des images etc. ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 17h42   #12
Membre confirmé
 
Inscription : septembre 2004
Messages : 519
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 519
Points : 257
Points : 257
oui, ca semble bon aussi.
soit mettre image/, scrtips/ et style/ dans la racine du site avec l'index.php.
soit les mettre dans un dossier public, qui est lui au meme niveau que l'index.php.

c'est ce que je pense faire, mais je voulais l'avis de gens qui font deja comme ca ! ou autrement
bibile est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 09h40   #13
Futur Membre du Club
 
Inscription : mai 2007
Messages : 25
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2007
Messages : 25
Points : 18
Points : 18
j'ai regroupé les vus, parce que j'ai utilisé smarty, et il y a des vus partagés par tout.

Si non, c'est le même l'abora de bibile
robin_liu79 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web