Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-06-2009 16:37:48

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Problème déclaration d'un module

Bonjour,

je n'arrive pas à faire router correctement une url vers un module sad

Voici mon arbo

Code:

application/
               controllers
               models
               views
               forms
               modules/
                           admin/
                                   controllers
                                   models/
                                   views/
                           blog/
                                   controllers
                                   models/
                                   views/

Mon module default est donc application/, et les autres sont dans modules.

J'ai la route suivante dans un fichier .ini

Code:

[routes]
admin.route = "admin/"
admin.defaults.controller = "index"
admin.defaults.action = "index"
admin.defaults.module = "admin"

L'url suivante

Code:

<a href="<?= $this->url(array('controller' => 'index', 'action' => 'index', 'module' => 'admin'), 'admin') ?>">Admin</a>

me charge le controleur Index du module default sad

Dans mon boostrap ZF 1.8.3 , j'ai loadé les modules de la manière suivante :

Code:

protected function _initAutoload()
    {
        $defaultloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Default_',
            'basePath'  => dirname(__FILE__),
        ));
        
        $adminloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => 'Admin_',
            'basePath' => APPLICATION_PATH . '/modules/admin/'));
        
    }

j'ai l'impression que le répertoire "modules" n'est pas reconnu...

Merci pour votre aide.

Dernière modification par supertino7 (11-06-2009 17:28:50)

Hors ligne

 

#2 12-06-2009 11:35:34

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Problème déclaration d'un module

Bon je pense que j'ai trouvé.

En fait, il faut quand même initialiser le frontController dans le boostrap :

Code:

protected function _initFrontController()
    {
        // Récupération d'une instance du controleur frontal
        $frontController = Zend_Controller_Front::getInstance();

        // Définition du répertoire de modules
        $frontController->addModuleDirectory(APPLICATION_PATH . '/modules');
        
        $frontController->setControllerDirectory(array(
            'default' => APPLICATION_PATH . '/controllers',
            'admin' => APPLICATION_PATH . '/modules/admin/controllers'));
        
        return $frontController;
    }

Et là, on peut attribuer à chaque module un nom.
Et donc, à chaque nouveau module que je crée, il va falloir que je spécifie le répertoire de ses controleurs.

Mais alors, à quoi sert le Zend_Application_Module_Autoloader .... ?
pourtant il charge des ressources comme les Models ou les Forms, mais pourquoi pas les controleurs aussi ? Ou alors il n'est pas encore abouti ?

Hors ligne

 

#3 12-06-2009 12:21:59

pinouf
Membre
Date d'inscription: 05-09-2008
Messages: 41

Re: Problème déclaration d'un module

hellow,

J'aimerai construire la même arborescence que toi mais je n' arrive pas...
puis-je voir ton bootstrap stp?

merci

Hors ligne

 

#4 12-06-2009 12:48:27

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

Re: Problème déclaration d'un module

Bonjour j'ai eu un problème similaire.

J'ai laissé mes codes ayant permis de déclarer mes modules sur le post :
http://www.z-f.fr/forum/viewtopic.php?id=3291

bon courage wink

Hors ligne

 

#5 12-06-2009 15:12:04

pinouf
Membre
Date d'inscription: 05-09-2008
Messages: 41

Re: Problème déclaration d'un module

salut patstey !

j'ai vu ton post mai sil me semble que ton arbo n'est pas éxactement la même ....
t'est modules sont en dehors de l'application..

Hors ligne

 

#6 12-06-2009 15:48:12

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

Re: Problème déclaration d'un module

Salut ''pinouf''

pinouf a écrit:

il me semble que ton arbo n'est pas exactement la même ....
t'est modules sont en dehors de l'application..

Evidement que mon arborescence n'est pas la même wink Chaque 'site' à ses propres besoins.

Néanmoins ton problème est identique à celui que j'ai rencontré :

1 - tu as tes modules dans un dossier /modules' mais pas tous
2 - ton module 'default' n'est pas dans ce dossier

C'est la même chose, sauf que tes différents modules sont rangés différemment.

Pour ton application.ini essaye :

Code:

; déclaration du module default dans '/application'
resources.frontController.controllerDirectory.default = APPLICATION_PATH "/controllers"

; déclaration du dossier pour les autres modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

;initialisation des modules (tous)
resources.modules[] =

J'ai juste adapté les déclarations des chemins pour TON arbo.

En espérant que cela t'aide à comprendre.

PatStey

PS : mieux vaut comprendre le code des autres et l'adapter à ses besoins, que de copier/coller une réponse toute faite sans la comprendre smile

Hors ligne

 

#7 12-06-2009 16:59:03

pinouf
Membre
Date d'inscription: 05-09-2008
Messages: 41

Re: Problème déclaration d'un module

hello smile

Code:

 resources.modules[] =

pourquoi c'est vide?
cela veut dire quoi?

Dernière modification par pinouf (12-06-2009 16:59:20)

Hors ligne

 

#8 12-06-2009 17:11:39

patstey
Membre
Date d'inscription: 21-01-2009
Messages: 15

Re: Problème déclaration d'un module

Si j'ai bien compris

Cette ligne permet de 'lancer' l'initialisation de la ressource modules et donc d'initialiser les bootstrap.php de chacun des modules.

Pourquoi est-elle vide ? aucune idée smile

Maintenant je n'ai pas trouvé d'explication dans la doc (je crois avoir trouvé cela sur le forum).

Si quelqu'un à plus d'explication je suis aussi preneur.

As-tu résolu ton problème ?

Hors ligne

 

#9 12-06-2009 17:14:25

pinouf
Membre
Date d'inscription: 05-09-2008
Messages: 41

Re: Problème déclaration d'un module

non big_smile
je suis en plein test et acharnement lol
en faite je trouve cela bizarre de mettre des boopstrap pour chaque module...
enfin pour l'instant cela ne marche pas je reviens dans 20 min pour vous dire comment cela avance

Hors ligne

 

#10 12-06-2009 17:24:51

pinouf
Membre
Date d'inscription: 05-09-2008
Messages: 41

Re: Problème déclaration d'un module

bon en gros c'est la mort complète lol....

voici mon ini

Code:

includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

;déclaration du dossier pour les autres modules
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

;initialisation des modules (tous)
resources.modules[] =

mon bootstrap est vide smile ( le défaut) les pages marchent très bien

Code:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{


}

dans application/modules/admin

j'ai mis un bootstrap

Code:

class Admin_Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{

}

est quand je tape le lien sa me sors une belle erreur

Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\wamp\www\zendtesting\library\Zend\Loader\PluginLoader.php on line 264

Hors ligne

 

#11 12-06-2009 17:30:59

pinouf
Membre
Date d'inscription: 05-09-2008
Messages: 41

Re: Problème déclaration d'un module

en gros il a pas aimé le bootstrap de l'admin quand je le vire il me remet une erreur

An error occurred
message ?>
Exception information:

Message: exception->getMessage() ?>
Stack trace:

exception->getTraceAsString() ?>
 

Request Parameters:

request->getParams()) ?>

Hors ligne

 

#12 12-06-2009 17:39:48

pinouf
Membre
Date d'inscription: 05-09-2008
Messages: 41

Re: Problème déclaration d'un module

ah ben ca marche....
j'ai viré le bootstrap dans l'admin
est a la place est nommé le controlleur


Code:

 class Admin_IndexController extends Zend_Controller_Action

je me demande maintenant à quoi sa sers de mettre plusieurs bootstrap vu que moi j'en ais que un... et que si j'en met un cela plante..

Hors ligne

 

#13 15-06-2009 11:28:51

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Problème déclaration d'un module

patstey a écrit:

Bonjour j'ai eu un problème similaire.

J'ai laissé mes codes ayant permis de déclarer mes modules sur le post :
http://www.z-f.fr/forum/viewtopic.php?id=3291

bon courage wink

Merci smile
Tu as également pu me dire comment charger des boostraps supplémentaires à chaque module (grace au fameux resources.modules[] )

Sinon, apparemment il n'est pas nécéssaire de spécifier le répertoire controleur de chaque module,

Code:

resources.frontController.controllerDirectory.admin   = APPLICATION_PATH "/admin/controllers"

tant qu'il se situe dans modulename/controller/

En fait, le plus important, c'est de déclarer celui du module default.

merci, je vais pouvoir décoller smile

Hors ligne

 

#14 15-06-2009 14:39:44

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Problème déclaration d'un module

J'aurai une dernière question, en rapport avec le boostrap de module.

Comment fait-on pour avoir la main sur l'objet vue ? Je voulais ajouter un script et des feuilles de style, mais

Code:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
    protected function _initViewHelpers()
    {
        $this->bootstrap('view');
        
        $view = $this->getResource('view');
        
        $view->headScript()->prependFile('http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js');
        $view->headScript()->prependFile('http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js');
        $view->headScript()->appendFile('/js/inscription/inscription_formulaire.js');

me génère l'erreur

Code:

Fatal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "view" not found'

getResource ne fonctionne pas neutral

Hors ligne

 

#15 15-06-2009 15:02:37

SweedyMick
Nouveau membre
Date d'inscription: 06-12-2007
Messages: 9

Re: Problème déclaration d'un module

Il te faudrait ajouter dans application.ini la ligne suivante :

Code:

admin.resources.view[] =

Je n'ai pas trouvé d'autres solutions que d'avoir à définir les paramètres pour le module en particulier, sans pouvoir définir des paramètres globaux.

Car si on regarde bien, le Bootstrap du module est d'abord appelé, et seuls les paramètres spécifiques à ce module sont définis. C'est ce qu'on voit dans Zend_Application_Module_Bootstrap, ligne 61

Code:

$key = strtolower($this->getModuleName());
if ($application->hasOption($key)) {
    // Don't run via setOptions() to prevent duplicate initialization
    $this->setOptions($application->getOption($key));
}

Dernière modification par SweedyMick (15-06-2009 15:02:58)

Hors ligne

 

#16 15-06-2009 15:16:27

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Re: Problème déclaration d'un module

SweedyMick a écrit:

Il te faudrait ajouter dans application.ini la ligne suivante :

Code:

admin.resources.view[] =

Je n'ai pas trouvé d'autres solutions que d'avoir à définir les paramètres pour le module en particulier, sans pouvoir définir des paramètres globaux.

Car si on regarde bien, le Bootstrap du module est d'abord appelé, et seuls les paramètres spécifiques à ce module sont définis. C'est ce qu'on voit dans Zend_Application_Module_Bootstrap, ligne 61

Code:

$key = strtolower($this->getModuleName());
if ($application->hasOption($key)) {
    // Don't run via setOptions() to prevent duplicate initialization
    $this->setOptions($application->getOption($key));
}

Merci pour ta réponse, ça marche. Mais c'est vrai que ça risque de s'avérer lourd, si les modules s'enchainent.

Quand tu parles de définir les paramètres globaux, je sais pas si on se comprends bien, mais les paramètres définis dans le Bootstrap de l'application sont bien définis aussi à tous les modules ?
Chez moi c'est comme ça, par exemple les feuilles de style que j'ai appelé dans le Bootstrap de l'appli dans _initViewHelpers sont balancés automatiquement dans les layout des modules.

Dernière modification par supertino7 (15-06-2009 15:25:28)

Hors ligne

 

#17 15-06-2009 15:29:44

SweedyMick
Nouveau membre
Date d'inscription: 06-12-2007
Messages: 9

Re: Problème déclaration d'un module

supertino7 a écrit:

Merci pour ta réponse, ça marche. Mais c'est vrai que ça risque de s'avérer lourd, si les modules s'enchainent.

Quand tu parles de définir les paramètres globaux, je sais pas si on se comprends bien, mais les paramètres définis dans le Bootstrap de l'application sont bien définis aussi à tous les modules ?
Chez moi c'est comme ça, les feuilles de style que j'ai appelé dans le Bootstrap de l'appli sont balancés automatiquement dans les layout des modules.

Pardon, c'est effectivement bien le cas. Suite à une petite erreur, je me demandais pourquoi la ligne

Code:

resources.view.helperPath.My_Helper_Path = "My/Helper/Path"

ne fonctionnait pas. En fait, pas de problème.

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