Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
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 13/07/2011, 17h29   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Par défaut Syteme de modules et chargement de classe

Bonjours,Je viens de mettre en place un syteme modulaire qui fonctionne bien.

Sauf que pour la peine, quand je veux cherher une classe sa marche pas avec le message d'erreur qui va avec.

Voici mon Bootstrap principale :
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
 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
		{
		    public function run()
		    {
				// Cela permet d'avoir la configuration disponible de partout dans notre application
		        Zend_Registry::set('config', new Zend_Config($this->getOptions()));
		        parent::run();
		    }
 
		    protected function _initDefaultNamespace()
    {
        $this->bootstrap('frontcontroller');
        $fc = $this->getResource('frontcontroller');
        $defaultModule = $fc->getControllerDirectory($fc->getDefaultModule());
 
		new Zend_Application_Module_Autoloader(array(
                'namespace' => '', // pas de namespace
                'basePath'  => APPLICATION_PATH . $defaultModule,
            ));
    }
 
 
    protected function _initView()
    {
        // Initialize view
        $view = new Zend_View();
        $view->doctype('XHTML1_STRICT');
        $view->headTitle('Ma premiere application avec Zend');
        $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=ISO-8859-1');
        // Add it to the ViewRenderer
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
        $viewRenderer->setView($view);
        // Return it, so that it can be stored by the bootstrap
        return $view;	
    }
 
}
Donc dans modules/default/controllers/IndexController.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
class IndexController extends Zend_Controller_Action
{
    public function init()
    {
       $this->view->headTitle('Mon application avec Zend_Application (Utilisateur par défaut)');
    }
 
    public function indexAction()
    {
        $this->_response->appendBody('Bievenue');
    }
 
	public function testAction()
	 {
	 $tuto1 = new Model_Tuto1();
	 $this->view->tabTuto1 = $tuto1->find();
	 }
}
Et le model Tuto1.php dans modules/default/model/Tuto1.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
 
<?php
class Model_Tuto1 {
	 private $dbTable;
	 private $id;
	 private $fr;
	 private $en;
 
	public function __construct( $id = false ) {
		$this->dbTable = new Model_DbTable_Tuto1();
		if($id) {
	    	$tmp = $this->dbTable->getTuto1($id);
	        $this->id = $tmp['id_tuto1'];
	        $this->fr = $tmp['fr'];
	        $this->en = $tmp['en'];
	     }
	 }
 
	 /*
	 * GET & SET
	 */
	 public function getDbTable() {
	     return $this->dbTable;
	 }
	 public function getId() {
	     return $this->id;
	 }
	 public function getFr() {
	     return $this->fr;
	 }
	 public function getEn() {
	     return $this->en;
	 }
 
	 public function setId($id) {
	     $this->id = id;
	 }
	 public function setFr($fr) {
	     $this->fr = $fr;
	 }
	 public function setEn($en) {
	     $this->en = $en;
	 }
 
	 public function add() {
	     return $this->dbTable->ajouter(array('fr' => $this->fr, 'en' => $this->en));
	 }
 
	 public function update() {
	     $this->dbTable->maj(array('id' => $this->id, 'fr' => $this->fr, 'en' => $this->en));
	 }
 
	 public function delete() {
	     $this->dbTable->supprimer($this->id);
	 }
 
	 public function find($tab = false) {
	     $results = $this->dbTable->find($tab);
 
	     foreach($results as $r)
	     {
	         $ret[] = new Model_Tuto1($r['id_tuto1']);
	     }
 
	     return $ret;
	 }
}
Donc on voit bien je veux instancier ma classe.
Mais lorque ce je vais sur le site sa dit classe introuvable.

Est un probleme de "autoloader" ?

Comment regler mon probleme ?


merci
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 17h52   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
et le message ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h20   #3
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Fatal error: Class 'Model_Tuto1' not found in C:\wamp\www\tuto\application\modules\default\controllers\IndexController.php on line 16
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h24   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
t'as quelle version du ZF ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h27   #5
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
1.11.8
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h31   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
pourquoi tu règles ça dans ton Bootsrap utilise le fichier ini du projet
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h32   #7
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
De quoi parlez vous ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h35   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
de ton application.ini
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h37   #9
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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
 
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = O
 
#Layout
resources.layout.layout = "layout"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
 
#Modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules = ""
 
#BDD
resources.db.adapter = "pdo_mssql"
resources.db.params.username =
resources.db.params.password =
resources.db.params.dbname = "tuto"
[staging : production]
 
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
 
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
Que faut il ajouter dans le ini, je comprends pas vraiment.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h40   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ton namespace c'est Application
t'as classe doit appeler Application_Model_Tuto1,
t'as pas fait le quickstart ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h45   #11
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Si j'ai fais mais j'avous que j'ai du mal a commprendre.

Donc que faudrai t'il mettre dans le ini a la place du boostrap ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h47   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par thebarbarius Voir le message
Si j'ai fais mais j'avous que j'ai du mal a commprendre.

Donc que faudrai t'il mettre dans le ini a la place du boostrap ?
Si tu comprends pas c'est pas la peine de bidouiller, commence par maitriser le langage avec de passé au niveau supérieur. chaque chose en son temps, si tu brules les étapes t'y arrivera jamais.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h50   #13
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Justement contrairement a ce que tu penses, je maitrise parafaitement la POO, php.

Mais la conception de zend je n'y comprends pas.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h54   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par thebarbarius Voir le message
Justement contrairement a ce que tu penses, je maitrise parafaitement la POO, php.

Mais la conception de zend je n'y comprends pas.
si tu le dis,
met le nom correct a ta classe et ça marchera
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 18h58   #15
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Est ce que mon bootstrap contient des chose inutile ?

Donc le nom de ma classe :
Code :
1
2
3
4
 
class Application_Model_Tuto1 {
        //
}
Et je l'instancie comme sa ?
Code :
1
2
3
4
5
6
 
	public function testAction()
	 {
	 $tuto1 = new Application_Model_Tuto1();
	 $this->view->tabTuto1 = $tuto1->find();
	 }
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 19h03   #16
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
le problème est que t'as pas suivis ce que je t'ai dis, t'as recopié des bouts du tuto de Julien qui n'est pas dans la même version que toi

donc je reviens ce que j'ai dit :

- soit tu prends la même version que le tuto
- soit tu suis le quickstart

bidouiller les deux ne marche pas
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 19h07   #17
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Oui en effet....

Pour le model il doit pas plutot s'appeler :
Code :
1
2
 
Application_Modules_Default_Models_Tuto1
Puisque le fichier Tuto1.php se trouve la :
Code :
1
2
 
application/modules/default/models/Tuto1.php
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 19h09   #18
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
suis le quickstart
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 19h11   #19
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Je l'ai deja fais.

Mais il a pas le syteme modulaire...


De plus je cite :
Citation:
Notez le préfixe de classe: Application_Model_DbTable. Le premier segment est "Application", le nom du module, puis vient le nom du composant "Model_DbTable" qui est lié au dossier models/DbTable/ du module.
Sa m'aide pas.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 19h18   #20
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
non puisque que t'as mélangé avec le tuto de Julien, fait les choses proprement et tu verras que tout marche très bien
__________________
http://blog.stealth35.com/
stealth35 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 00h12.


 
 
 
 
Partenaires

Hébergement Web