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 09/02/2011, 23h25   #1
Nouveau Membre du Club
 
Avatar de ToxiK
 
Charly
Inscription : juin 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : juin 2006
Messages : 117
Points : 26
Points : 26
Par défaut Module Frontend par défaut avec préfixe

Bonjour,

j'utilise les modules, j'ai donc modifié mon Bootstrap et mon archtecture pour avoir un module Frontend et un module Backend.

Extrait de mon application/Bootstrap.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
 
	public function run()
	{
 
		try {
 
			// Instancie le contrôleur frontal
			$frontController = Zend_Controller_Front::getInstance();
 
        	$frontController->throwExceptions(false);
 
			$frontController->setDefaultModule("Frontend");
 
			$frontController->setControllerDirectory(array(
				'Frontend' => APPLICATION_PATH .'/modules/frontend/controllers',
				'Backend'    => APPLICATION_PATH .'/modules/backend/controllers'
			));
 
			// Cela permet d'avoir le fichier de configuration disponible depuis n'importe ou dans l'application.
			Zend_Registry::set('config', new Zend_Config($this->getOptions()));
 
			parent::run();
 
		} catch (Zend_Controller_Exception $e) {
 
			//var_dump($e);
 
			exit($e->getMessage());
		    include 'errors/404.phtml';
 
    	} catch (Exception $e) {
 
    		exit($e->getMessage());
		    include 'errors/500.phtml';
 
		}
 
	}
 
 
	protected function _initDb()
	{
		//on charge notre fichier de configuration
		$config = new Zend_Config($this->getOptions());
 
		//On essaye de faire une connection a la base de donnee.
		try{
			$db = Zend_Db::factory($config->resources->db);
			//on test si la connection se fait
			$db->getConnection();
 
			Zend_Db_Table::setDefaultAdapter($db);
 
		}catch ( Exception $e ) {
			exit( $e -> getMessage() );
		}
		// on stock notre dbAdapter dans le registre
		Zend_Registry::set( 'dba', $db );
		return $db;
	}
 
	protected function _initDefaultNamespace()
	{
		$moduleLoaders = array();
 
		// Frontend
		$frontend = new Zend_Application_Module_Autoloader(
			array(
				'namespace' => 'Frontend_', 
				'basePath'  => APPLICATION_PATH . '/modules/frontend',
			)
		);
 
		// Backend
		$backend = new Zend_Application_Module_Autoloader(
		array(
			'namespace' => 'Backend_', 
			'basePath'  => APPLICATION_PATH . '/modules/backend',
		)
		);
 
		$moduleLoaders['Frontend'] = $frontend;
		$moduleLoaders['Backend'] = $backend;
 
		return $moduleLoaders;
	}
Par contre je ne comprend pas pourquoi je ne peux pas appeler mes controllers Frontend_IndexController, Frontend_ErrorController, etc.. mais seulement IndexController, etc...

Sinon j'ai une exception "IndexController introuvable".
ToxiK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 09h50   #2
Membre expérimenté
 
Avatar de manuscle
 
Homme Emmanuel Belair
Développeur informatique
Inscription : septembre 2004
Messages : 463
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Belair
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2004
Messages : 463
Points : 597
Points : 597
Bonjour,

Je crois que c'€st parce que tu dit au frontcontroller que le module par defaut est frontend, donc tu n'a pas besoin de préfixer tes classes.
Retire cette ligne pour vérifier que je ne dit pas de betises ;-)
Code :
1
2
 
$frontController->setDefaultModule("Frontend");
__________________
Les idiots sont ceux qui ne posent jamais de question!
manuscle est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2011, 09h59   #3
Nouveau Membre du Club
 
Avatar de ToxiK
 
Charly
Inscription : juin 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : juin 2006
Messages : 117
Points : 26
Points : 26
Oui c'est bien ça, seulement si j'enlève cette ligne je me chopppe une exception :

Code :
No default controller directory registered with front controller
en accédant à l'url http://www.rage-airsoft.fr/site/
ToxiK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 10h12   #4
Membre expérimenté
 
Avatar de manuscle
 
Homme Emmanuel Belair
Développeur informatique
Inscription : septembre 2004
Messages : 463
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Belair
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2004
Messages : 463
Points : 597
Points : 597
Ben ouais mais c'était pour l'exemple, il te faut définir un controller par defaut, tu sauras juste que dans ce module tu n'a pas besoin de préfixer tes classes ...
__________________
Les idiots sont ceux qui ne posent jamais de question!
manuscle est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/02/2011, 13h28   #5
Nouveau Membre du Club
 
Avatar de ToxiK
 
Charly
Inscription : juin 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : juin 2006
Messages : 117
Points : 26
Points : 26
En fait je veux que Frontend soit mon controller par défaut.

Mais j'aimerais quand même préfixer mes controllers par Frontend_

je ne sais pas si c'est vraiment utile ou non, mais ça sera plus clair.
ToxiK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h08   #6
Membre expérimenté
 
Avatar de manuscle
 
Homme Emmanuel Belair
Développeur informatique
Inscription : septembre 2004
Messages : 463
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Belair
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2004
Messages : 463
Points : 597
Points : 597
Dans ce cas tu doit ajouter ceci dans ton bootstrap:

Code :
1
2
3
4
5
 
        new Ez_Application_Module_Autoloader(array(
                'namespace' => 'Frontend', 
                'basePath'  => APPLICATION_PATH . '/modules/'frontend',
            ));
Mais c'est vraiment pour faire joli!
__________________
Les idiots sont ceux qui ne posent jamais de question!
manuscle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h21   #7
Nouveau Membre du Club
 
Avatar de ToxiK
 
Charly
Inscription : juin 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : juin 2006
Messages : 117
Points : 26
Points : 26
J'avais ce code dans mon application/modules/frontend/Bootstrap.php

Code :
1
2
3
4
5
6
7
8
9
10
11
public function _initAutoload() { 
 
		$autoloader = new Zend_Application_Module_Autoloader(array( 
				'namespace' => 'Frontend_', 
				'basePath'  => APPLICATION_PATH . '/modules/frontend',
			)
		);
 
		return $autoloader;
 
	}
je l'ai déplacer dans mon application/Bootstrap.php, mais j'ai toujours mon exception : Invalid controller class ("IndexController")
ToxiK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h23   #8
Membre expérimenté
 
Avatar de manuscle
 
Homme Emmanuel Belair
Développeur informatique
Inscription : septembre 2004
Messages : 463
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Belair
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2004
Messages : 463
Points : 597
Points : 597
moi je ne met pas de underscore dans mon namespace
__________________
Les idiots sont ceux qui ne posent jamais de question!
manuscle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h29   #9
Nouveau Membre du Club
 
Avatar de ToxiK
 
Charly
Inscription : juin 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : juin 2006
Messages : 117
Points : 26
Points : 26
C'est vrai, je viens d'essayer sans et ça me le fait quand même.

J'ai aussi essayer d'enlever l'underscore ici mais pas de changement
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
protected function _initDefaultNamespace()
	{
		$moduleLoaders = array();
 
		// Frontend
		$frontend = new Zend_Application_Module_Autoloader(
			array(
				'namespace' => 'Frontend', 
				'basePath'  => APPLICATION_PATH . '/modules/frontend',
			)
		);
 
		// Backend
		$backend = new Zend_Application_Module_Autoloader(
		array(
			'namespace' => 'Backend', 
			'basePath'  => APPLICATION_PATH . '/modules/backend',
		)
		);
 
		$moduleLoaders['Frontend'] = $frontend;
		$moduleLoaders['Backend'] = $backend;
 
		return $moduleLoaders;
	}
ToxiK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h38   #10
Membre expérimenté
 
Avatar de manuscle
 
Homme Emmanuel Belair
Développeur informatique
Inscription : septembre 2004
Messages : 463
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Belair
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2004
Messages : 463
Points : 597
Points : 597
ben oui mais dans initAutoload il faut que tu dise a ton controlleur frontal d'utiliser Frontend par defaut
__________________
Les idiots sont ceux qui ne posent jamais de question!
manuscle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h43   #11
Nouveau Membre du Club
 
Avatar de ToxiK
 
Charly
Inscription : juin 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : juin 2006
Messages : 117
Points : 26
Points : 26
C'est à dire ?

J'ai déjà cette ligne dans le run() de mon application/Bootstrap.php

Code :
$frontController->setDefaultModule("Frontend");
ToxiK est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 15h10   #12
Membre expérimenté
 
Avatar de manuscle
 
Homme Emmanuel Belair
Développeur informatique
Inscription : septembre 2004
Messages : 463
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Belair
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2004
Messages : 463
Points : 597
Points : 597
Ah ok! Je croyais que tu l'avais viré! Autant pour moi
Bon ben là je sèche..... j'ai essayé chez moi et j'ai le même probleme
impossible de créer Frontend_IndexController .....

Par contre la methode run c'est bien la première fois que je vois ça ..... c'est un peu bizare de faire comme ça c'est nouveau?!
__________________
Les idiots sont ceux qui ne posent jamais de question!
manuscle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 16h59   #13
Nouveau Membre du Club
 
Avatar de ToxiK
 
Charly
Inscription : juin 2006
Messages : 117
Détails du profil
Informations personnelles :
Nom : Charly

Informations forums :
Inscription : juin 2006
Messages : 117
Points : 26
Points : 26
Je l'avais enlever puis je l'ai remis

Pour la méthode run() je ne sais pas trop... je débute et j'ai vu ça dans un tuto.
ToxiK est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web