Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-06-2009 21:56:15

erwanpia
Membre
Lieu: Locronan - Quimper
Date d'inscription: 16-10-2007
Messages: 18
Site web

[1.8] application . ini pour module

Bonjour,

je trouve le concept de modules très interssant et j'artrive bien à faire fonctionner mon module mais je n'arrive pas à le configurer dans application.ini. Par exemple l'instruction ci dessous (dernière ligne) devrait définir mes layout pour le module admin mais ce n'est pas le cas, le module admin garde le layout par défaut. Ai je oublié de déclarer le bootstrap de mon module  ?

 

Code:

includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.layout.layoutPath = APPLICATION_PATH "/layout/scripts"
resources.layout.layout = "layout"

 
admin.resources.layout.layout=  "admin"

Dernière modification par erwanpia (15-06-2009 21:57:00)

Hors ligne

 

#2 16-06-2009 08:59:10

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.8] application . ini pour module

D'où sort cette syntaxe ?

Hors ligne

 

#3 16-06-2009 11:09:34

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [1.8] application . ini pour module

Hello,

@Mr.MoOx : depuis ZF 1.8. C'est l'APPLICATION_PATH qui t'étonnes ?

@erwanpia : je vois pas sad

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#4 16-06-2009 13:06:19

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: [1.8] application . ini pour module

Salut,

@mikaelkael: je crois plutôt que c'est "admin.resources.layout.layout" qui dérange Mr.moox.

@Mr.Moox: un petit tour vers la documentation => Resource modules

@erwanpia: je crois que tu devrais rajouter un "resources.modules[]=" avant ton admin.resources... pour que cela marche. (Pas vérifié)

A+

Hors ligne

 

#5 16-06-2009 13:26:28

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [1.8] application . ini pour module

Il est vrai qu'il ne faut pas obtenir grand chose de "admin.resources.layout.layout".

N'oubliez pas que le bootstrap, ne sait pas à l'avance quel module/action/controller va être appelé. Il n'est donc pas possible de spécifiier le layout à utiliser. On ne peut spécifier que les options qui ne dépendent pas réellement d'un module.
Par contre, rien n'empeche un plugin (ou autre) de changer le layout via la conf d'un module.

Sinon, je confirme que rajouté "resources.modules[] =" ne serait pas une mauvaise chose


----
Gruiiik !

Hors ligne

 

#6 16-06-2009 15:11:42

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.8] application . ini pour module

( Ouais je connaissais pas la syntaxe pour les modules, je suis passé un peu vite sur la doc smile )

N'oubliez pas que le bootstrap, ne sait pas à l'avance quel module/action/controller va être appelé. Il n'est donc pas possible de spécifiier le layout à utiliser. On ne peut spécifier que les options qui ne dépendent pas réellement d'un module.
Par contre, rien n'empeche un plugin (ou autre) de changer le layout via la conf d'un module.

...
Heu alors à quoi ça servirait ?! Que ce soit un plugin ou "Zend_Application" et sa logique de fonctionnement, c'est du pareille au même... Ou alors j'ai pas assez dormi...

Hors ligne

 

#7 16-06-2009 17:44:15

erwanpia
Membre
Lieu: Locronan - Quimper
Date d'inscription: 16-10-2007
Messages: 18
Site web

Re: [1.8] application . ini pour module

resources.modules[] =

j'avais bien essayé mais cette instruction n' aucune incidence sur la config du module

quelq'un peut il me donner un piste pour debugger peut etre ? par ou on commence pour débugger le bootstrap ?

Hors ligne

 

#8 16-06-2009 17:51:04

erwanpia
Membre
Lieu: Locronan - Quimper
Date d'inscription: 16-10-2007
Messages: 18
Site web

Re: [1.8] application . ini pour module

MrMoox : très impressionnant ton site . ZF + Jquery c'est DU TOP

E.

Hors ligne

 

#9 16-06-2009 17:54:37

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [1.8] application . ini pour module

Mr.MoOx a écrit:

( Ouais je connaissais pas la syntaxe pour les modules, je suis passé un peu vite sur la doc smile )

N'oubliez pas que le bootstrap, ne sait pas à l'avance quel module/action/controller va être appelé. Il n'est donc pas possible de spécifiier le layout à utiliser. On ne peut spécifier que les options qui ne dépendent pas réellement d'un module.
Par contre, rien n'empeche un plugin (ou autre) de changer le layout via la conf d'un module.

...
Heu alors à quoi ça servirait ?! Que ce soit un plugin ou "Zend_Application" et sa logique de fonctionnement, c'est du pareille au même... Ou alors j'ai pas assez dormi...

Tu n'es d'accord que tes bootstrap ne peuvent pas anticiper quelle module/controller/action va se charger ?

Le bootstrap veut dire ce qu'il veut dire, c'est le "démarrage" du processus. Sinon, les fonctions de type "predispatch" auraient disparue


----
Gruiiik !

Hors ligne

 

#10 16-06-2009 18:42:08

erwanpia
Membre
Lieu: Locronan - Quimper
Date d'inscription: 16-10-2007
Messages: 18
Site web

Re: [1.8] application . ini pour module

Bon j'avance..

effectivement la ligne

Code:

resources.modules = ""

ou

Code:

resources.modules[] = ""

est indispensable dans le application.ini

mais surtout il m'a fallu créer dans mon répertoire de module une classe bootstrap spécifique pour ce module

une fois que ce fichier Bootstrap.php est créé alors les paramètres spécifiques du application.ini s'appliquent ... à tous les modules

Code:

class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

Dernière modification par erwanpia (16-06-2009 18:46:55)

Hors ligne

 

#11 16-06-2009 18:45:03

erwanpia
Membre
Lieu: Locronan - Quimper
Date d'inscription: 16-10-2007
Messages: 18
Site web

Re: [1.8] application . ini pour module

Hum... pas encore... le layout du admin s'applique à tous les modules maintenant..

Hors ligne

 

#12 16-06-2009 19:01:41

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [1.8] application . ini pour module

Je trouve cette ligne bizarre

Code:

resources.modules[] = ""

Ca ne ressemble pas au ZF...

@nORKy

Tu n'es d'accord que tes bootstrap ne peuvent pas anticiper quelle module/controller/action va se charger ?

Le bootstrap veut dire ce qu'il veut dire, c'est le "démarrage" du processus. Sinon, les fonctions de type "predispatch" auraient disparue

Si si bien évidement. Je parlais de Zend_Application qui apparement englobe plus de choses qu'un simple boostrap. Dans le cas contraire, je ne comprend vraiment pas l'intérêt de Zend_Application_Resource_Modules ...

Hors ligne

 

#13 18-06-2009 21:43:11

CocoRambo
Membre
Date d'inscription: 23-08-2008
Messages: 17

Re: [1.8] application . ini pour module

erwanpia a écrit:

Hum... pas encore... le layout du admin s'applique à tous les modules maintenant..

J'en suis au meme point que toi, c'est à dire que le layout du module s'est généralisé...
As tu avancé?

Merci

Hors ligne

 

#14 19-06-2009 08:40:31

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [1.8] application . ini pour module

Voici un exemple concret de ce que j'essai d'expliquer, ca devrait vous aider :

http://blog.keppens.biz/2009/06/create- … -zend.html

Concernant les resources de modules et admin avec un plugin, c'est vers le milieu du tuto, partie "layout"

Dernière modification par nORKy (19-06-2009 08:41:58)


----
Gruiiik !

Hors ligne

 

#15 19-06-2009 09:51:20

CocoRambo
Membre
Date d'inscription: 23-08-2008
Messages: 17

Re: [1.8] application . ini pour module

Merci nORKY pour ce lien!
Je trouve dommage que le ZF ai prévu (cf Documentation) ces paramètres (moduleName.resources.layout.layout) dans le application.ini sans avoir implémenté ce qui va bien derrière. Bon c'est pas la mère à boire non plus et ca se fait bien rapidement mais je trouve ca dommage smile

Hors ligne

 

#16 19-06-2009 11:09:11

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [1.8] application . ini pour module

Parce que le but recherché par les dev n'est pas celui que tu veux.
tu peux espérer plus tard un plugin de la part des dev du ZF plus complet qui fera ce que tu recherches.


----
Gruiiik !

Hors ligne

 

#17 01-09-2009 22:22:06

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: [1.8] application . ini pour module

Up de ce sujet
As t on une solution avec la 1.9 ? Moi je n'y arrive toujours pas

En attendant je procede comme ceci :

Aide d'action layoutLoader

Code:

<?php
class My_Controller_Action_Helper_LayoutLoader extends Zend_Controller_Action_Helper_Abstract
{
    public function preDispatch()
    {
        $bootstrap = $this->getActionController()
            ->getInvokeArg('bootstrap');
        $config = $bootstrap->getOptions();
        $module = $this->getRequest()->getModuleName();
        if (isset($config[$module]['resources']['layout']['layout'])) {
            $layoutScript =
            $config[$module]['resources']['layout']['layout'];
            $this->getActionController()
                ->getHelper('layout')
                ->setLayout($layoutScript);
        }
    }
}

Dans le bootstrap :

Code:

    protected function _initLayoutHelper()
    {
        $this->bootstrap('frontController');
        $layout = Zend_Controller_Action_HelperBroker::addHelper(
            new My_Controller_Action_Helper_LayoutLoader());
    }

App.ini

Code:

; Layout
resources.Layout.layoutPath = APP_PATH "/layouts" 
resources.Layout.layout = "default"
admin.resources.layout.layout = "admin"

Dernière modification par alien7 (01-09-2009 23:08:24)


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#18 24-09-2009 10:40:30

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8] application . ini pour module

Salut Alien7,
Merci pour ton exemple qui me sert, une petite question :
J'ai essayé d'ajouter dans le My_Controller_Action_Helper_LayoutLoader les headLink() et headScript():

Code:

$view = $bootstrap->getResource('view');
        
        switch($module){
            case "default" :
                $view->addHelperPath('../application/default/views/helpers','App_View_Helper');
                $view->headLink()->appendStylesheet('/css/mainStyle.css');
                $view->headScript()->appendFile('/js/scripts.js','text/javascript');
                $view->headScript()->appendFile('/js/mainFonctions.js','text/javascript');
            break;
            case "admin" :
                $view->addHelperPath('../application/admin/views/helpers','Admin_View_Helper');
                $view->headLink()->appendStylesheet('/css/mainAdmin.css');
                $view->headScript()->appendFile('/js/mainAdmin.js','text/javascript');
            break;
        }

Pour les deux cela fonctione mais pas pour le $view->addHelperPath, il ne prend rien ?
Est ce que tu aurais une idée... ou quelqu'un d'autre ?

Merci d'avance


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#19 24-09-2009 10:44:25

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [1.8] application . ini pour module

Y'a toujours des solutions. Je l'ai déjà écrit, les plugins : c'est bien

http://blog.astrumfutura.com/archives/4 … ators.html


----
Gruiiik !

Hors ligne

 

#20 24-09-2009 11:04:10

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8] application . ini pour module

nORKy a écrit:

Y'a toujours des solutions. Je l'ai déjà écrit, les plugins : c'est bien

http://blog.astrumfutura.com/archives/4 … ators.html

Oui je suis d'accord, mais à la lecture de cette aricle, je ne comprend pas tout de plus je n'ai pas vu  comment ajouter les viewHelpers de chaque module?
c'est sûrement du à mon niveau smile


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#21 24-09-2009 11:13:04

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [1.8] application . ini pour module

Les viewhelpers par modules ?
Si tu as créé un fichier Boostrap.php dans ton module avec la classe qui va avec (meme vide, juste la définition de la classe suffit),  tu as juste à les placer dans modules/monmodule/views/helpers
Avec des classes nommées Monmodule_View_Helper_

Comment, je sais ca ?
Regarde le code du ZF dans Zend/Application/Module/Autoloader.php

Dernière modification par nORKy (24-09-2009 11:13:27)


----
Gruiiik !

Hors ligne

 

#22 24-09-2009 11:24:41

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8] application . ini pour module

Effectivement après vérifications, le view helper fonction pour le module admin mais pas pour le default ?
mon arbo:

application
    +default
            +controllers
            +models
            +views
            -Bootstrap.php

    +config
            -application.ini

    +admin
            +controllers
            +models
            +views
            -Bootstrap.php

    -Bootstrap.php

chaque bootstrap de modul :

class <moduleName>_Bootstrap extends Zend_Application_Module_Bootstrap
{
}


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#23 24-09-2009 11:33:43

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [1.8] application . ini pour module

nan pas pour le défault. C'est comme ca dans le code. Faut le rajouté toi même.
Car, on consière que le défault, c'est /application et non pas /application/module/default


----
Gruiiik !

Hors ligne

 

#24 24-09-2009 13:59:42

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8] application . ini pour module

J'ai modifier l'arbo,
application
    +controllers
    +models
    +views
    +config
            -application.ini
    +modules
            +admin
                    +controllers
                    +models
                    +views
                    -Bootstrap.php
    -Bootstrap.php

Mais cette fois ci il ne trouve plus les classes,
j'avais App_View_Helper_Notice que j'ai modifier en View_Helper_Notice mais il ne trouve toujours pas les helper?

Pourtant il va chercher dans le bon dossier :
Plugin by name 'Notice' was not found in the registry; used paths:
Zend_View_Helper_: Zend/View/Helper/:/var/www/application/views/helpers/

ou se trouvent les classes

hmm

Dernière modification par Dede (24-09-2009 14:22:59)


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#25 24-09-2009 14:55:31

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: [1.8] application . ini pour module

Je ne comprend pas,

Il charge bien les helpers du module avec le nom de classe prefixé comme ceci <module>_View_Helper_<Nomdeclasse> mais il ne prend pas ceux de "default"?
j'ai essayer de modifier les prefixes : "App_" ou "Default_" ou simplement "View_Helper_<Nomdeclasse>" mais ça ne donne rien ?
Pourtant il va bien dans le bon dossier?

Je fais l'appel depuis le controller de cette façon :
$this->view-><nomdeclasse>($options);


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

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