Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-05-2009 16:10:19

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

[ZF 1.8.0]Premiers tests

La bonne nouvelle, c'est que la version 1.8.0 passe sans problème avec les projets déjà en production.

Bon sinon, j'ai suivi et réalisé le quickStart et j'avoue être quelque peu dans le doute...
L'arborescence ne prévoit pas sous /application le niveau du module /default...
Comment ajouter des module et matérialiser le module default ?

Quelques exemples plus détaillés du fichier ini avec des projets plus étoffés serait sympa.
D'autre part il est dit que l'on peut utiliser un php à la place d'un fichier ini...

Et pour le registerAutoload, faut il modifier le source ? Comment préparer les "vieux" projets à passer le cap de la future V2.0 sans tout revoir ?

Suis-je le seul à avoir de type de question ?

Dernière modification par Jean-Marc Rigade (02-05-2009 16:20:08)

Hors ligne

 

#2 02-05-2009 16:58:30

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [ZF 1.8.0]Premiers tests

Pour autoload il semble qu'avec ça le problème soit "réglé", en tout cas plus de warning.

Code:

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);

Bon pour les modules je reste ouvert...

Hors ligne

 

#3 04-05-2009 10:26:41

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [ZF 1.8.0]Premiers tests

J'ai pu ajouter le niveau "default" sous application, mais je n'ai pas été capable de faire prendre en compte un autre module, ni de modifier la route par défaut...
Je trouve floue les endroit auxquels il est possible de faire prendre en compte ces modifications.

Suis-je le seul a avoir ces questions ?

Hors ligne

 

#4 04-05-2009 11:37:43

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

Re: [ZF 1.8.0]Premiers tests

Hello,

J'ai fait une migration brutale 1.8 avec seulement le code :

Code:

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->setFallbackAutoloader(true);

Et j'injecte les nouveaux composants tranquillement (Zend_Navigation = que du bonheur et ensuite Zend_Application)

Parles-tu de Zend_Tool ?

A+

Dernière modification par mikaelkael (04-05-2009 11:39:16)


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

Hors ligne

 

#5 04-05-2009 12:36:15

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [ZF 1.8.0]Premiers tests

J'ai aussi fait comme toi pour une "migration" brute...
J'ai en effet utilisé Zend_tool pour générer un nouveau projet, qui, soit dit en passant ne me génère pas un .project utilisable par Eclipse, dommage...

Mais le plus important suit :
Donc à partir de ce projet test, j'ai essayé d'ajouter la notion de modules pour avoir une arborescence du style :

Code:

application
    admin
        config
        controllers
        forms
        helpers
        layouts
        models
        views
        bootstrap.php
    default
        config
        controllers
        forms
        helpers
        layouts
        models
        views
        bootstrap.php
public
    .htaccess
    index.php
scripts
tests

J'ai modifié les fichiers config sans succès, j'ai vu qu'il était possible de remplacer les fichier ini par du php, mais je n'ai pas compris comment.
Dans un projet ancienne version j'ai dans mon initializer.php :

Code:

 public function initRoutes()
    {
        $router = $this->_front->getRouter();
        $router->addRoute(
            "communaute",
            new Zend_Controller_Router_Route(
                "/:communaute/:module/:controller/:action/*",
                array(
                    "communaute"     => "general",
                    "module"        => "default",
                    "controller"    => "index",
                    "action"        => "index"
                )
            )
        );
        
    }
    public function initControllers()
    {
        $this->_front->addControllerDirectory($this->_root . '/application/default/controllers', 'default');
        $this->_front->addControllerDirectory($this->_root . '/application/admin/controllers', 'admin');
    }

Et je ne vois pas où placer ces deux procédures pour qu'elles soient prises en compte, j'ai essayé pas mal de choses mais ça part en vrille...
J'ai aussi constaté que dans bootstrap.php, la fonction "protected function _initEnv()" était prise en compte, mais je n'ai pas trouvé de détail là dessus dans la doc...

Un quickstart plus "étoffé" serait le bienvenu voire quelques nouvelles pages dans l'excellent ouvrage de messieurs Pauli et Ponçon trouveraient preneur, en ce qui me concerne...

Hors ligne

 

#6 04-05-2009 12:58:13

benji07
Membre
Lieu: Valence
Date d'inscription: 12-02-2008
Messages: 20

Re: [ZF 1.8.0]Premiers tests

http://akrabat.com/2009/05/01/zend-fram … for-zf-18/ <- un petit tuto

Pour que les methodes soit prisent en compte dans le bootstrap, il faut que leur nom commence par _init

Sinon pour l'ajout des modules, je suis également en train de chercher comment on peut faire

Hors ligne

 

#7 04-05-2009 14:01:35

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [ZF 1.8.0]Premiers tests

Ok pour les méthodes de type _init, je m'en doutais un peu, mais j'ai pas vu comment il faisait ça, mais bon ce n'est pas l'essentiel.

Pour les modules je vois que je ne suis pas tout seul.
As-tu vu qu'il était possible de remplacer le fichier config.ini par du php ?
Quoi qu'il en soit, je ne parviens pas à obtenir une architecture avec des modules et une route modifiée (voir mon message plus haut) qui fonctionne en suivant les nouvelles préconisations.

Je me demande à partir de quelle version l'architecture générale d'une application basée sur le ZF sera stabilisée ?
On est, je crois, à la 3eme grosse révision du fonctionnement du bootstrap...
C'est bien et, une fois que j'ai compris, j'ai toujours trouvé ça justifié. Il n'empêche que ça génère pas mal d'interrogations, voire de stress.

Hors ligne

 

#8 04-05-2009 15:00:26

benji07
Membre
Lieu: Valence
Date d'inscription: 12-02-2008
Messages: 20

Re: [ZF 1.8.0]Premiers tests

Pour le moment Zend_tool ne supporte pas les modules sad

http://www.zfforums.com/zend-framework- … l#post9892

Hors ligne

 

#9 04-05-2009 15:06:56

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [ZF 1.8.0]Premiers tests

Bon, ok...
Mais reste comment modifier le bootstrap ou le config.ini pour ajouter à la main des modules...
La question reste ouverte...

Oui je peux toujours coller le code dans mon bootstrap... Mais plus de doc sur le ini serait bien, non ?

Dernière modification par Jean-Marc Rigade (04-05-2009 17:40:01)

Hors ligne

 

#10 06-05-2009 10:52:53

yvann
Membre
Date d'inscription: 24-07-2008
Messages: 81

Re: [ZF 1.8.0]Premiers tests

Alors pour ma part, j'ai seulement ajouté cela dans mon application.ini :

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules/"
resources.frontController.defaultModule = "frontoffice"

Hors ligne

 

#11 06-05-2009 11:37:00

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

Re: [ZF 1.8.0]Premiers tests

moi, ca ressemble à ca :

Code:

[production]
pluginPaths.Adista_Resource_ = "My/Resource/"
includePaths.library = APPLICATION_PATH "/lib"
bootstrap.path  = APPLICATION_PATH "/Bootstrap.php"
autoloaderNamespaces.0 = "My_"

phpSettings.date.timezone = "Europe/Paris"

resources.session.save_path = APPLICATION_PATH "/../data/sessions"

resources.frontController.moduledirectory     = APPLICATION_PATH "/modules"
resources.frontController.env                   = APPLICATION_ENV
resources.frontController.prefixDefaultModule = true
resources.frontController.baseUrl               = "/superv"

resources.errorHandler.module      = my
resources.errorHandler.controller = error
resources.errorHandler.action     = process

resources.view.doctype                     = "XHTML1_STRICT"
resources.view.encoding                    = "UTF-8"
resources.view.helperPath.My_View_Helper = "My/View/Helper"

resources.layout.layout = "layout"
resources.layout.layoutPath = APPLICATION_PATH "/layouts"

resources.navigation.pages.account.label      = Comptes
resources.navigation.pages.account.id         = account
resources.navigation.pages.account.module     = user
resources.navigation.pages.account.controller = account
resources.navigation.pages.account.resource   = user:account

resources.navigation.pages.msuperv.label      = Supervision
resources.navigation.pages.msuperv.id         = msuperv
resources.navigation.pages.msuperv.module     = superv
resources.navigation.pages.msuperv.controller = dgroup
resources.navigation.pages.msuperv.resource   = superv:dgroup

[development : production]
phpsettings.display_startup_errors = 1
phpsettings.display_errors = 1
phpsettings.error_reporting = 8191

errorHandler est une resource perso défini via _initErrorHandler() car la partie plugin du boostrap ne gère pas le passage de paramètres

J'ai aussi un :
*  _initAcl (pour la même raison que précédement)
* _initDb (J'utilise doctrine, donc, c'est une partie totalement perso)
* _initLog (mise en place des writer en fonction d'élément de config comme 'debug', et change de format de log, etc..)


----
Gruiiik !

Hors ligne

 

#12 06-05-2009 14:31:33

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [ZF 1.8.0]Premiers tests

Merci pour toutes ces informations !
Je vais essayer tout ça...

Hors ligne

 

#13 06-05-2009 16:49:46

ziedb
Membre
Lieu: Tunis
Date d'inscription: 24-03-2008
Messages: 224

Re: [ZF 1.8.0]Premiers tests

benji07 a écrit:

Pour le moment Zend_tool ne supporte pas les modules sad

http://www.zfforums.com/zend-framework- … l#post9892

Quand-est ce que c'est prévu?

Hors ligne

 

#14 06-05-2009 17:04:56

benji07
Membre
Lieu: Valence
Date d'inscription: 12-02-2008
Messages: 20

Re: [ZF 1.8.0]Premiers tests

http://devzone.zend.com/article/4559-Ze … and-ZF-1.8
Bientôt:
Voir les commentaires tout en bas

Hors ligne

 

#15 09-05-2009 13:03:40

pronorama
Membre
Date d'inscription: 24-09-2007
Messages: 17
Site web

Re: [ZF 1.8.0]Premiers tests

yvann a écrit:

Alors pour ma part, j'ai seulement ajouté cela dans mon application.ini :

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules/"
resources.frontController.defaultModule = "frontoffice"

Bonjour,
J'ai pas mal galéré pour la mise en place de modules (arborescence, paramétrage du fichier application.ini, ...) et pour comprendre comment fonctionne la class "bootstrap" au niveau appli et au niveau module, mais je pense y être arrivé.

=> ne pas oublier d'ajouter la ligne suivante dans le fichier application.ini :
resources.modules[] =

Sinon la class "<Module>_Bootstrap" (dans le fichier Bootstrap.php spécifique à chaque module) ne sera pas exécutée.

J'en profite pour vous donner une astuce en passant : j'ai créé un plugin de ressource nommé "Log" qui permet de paramétrer la manière de Logguer des messages via Zend_Log (le paramétrage du formatter, du writer, du filtre, ... étant défini dans le fichier application.ini : resource.log.xxxxx=yyyyy). Le problème est que par défaut, les plugins de ressources semblent être chargés après l'exécution des méthodes "_initXXX" de la classe Bootstrap. Il est donc impossible de logguer quoi que ce soit dans ces méthodes.

La solution est de surcharger la méthode "__construct" de la classe "Bootstrap" en forçant la ressource "Log" à être bootstrapée en 1er :

    public function __construct($application)
    {
        parent::__construct($application);
        $this->bootstrap('Log');
    }

Hors ligne

 

#16 10-05-2009 16:28:42

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

Re: [ZF 1.8.0]Premiers tests

Pas besoin de l'appeler dans un __construct, tu l'appelles dans les _init qui ont besoin de logué. Ca créé ainsi une dépendance entre les resources.


----
Gruiiik !

Hors ligne

 

#17 10-05-2009 16:49:37

pronorama
Membre
Date d'inscription: 24-09-2007
Messages: 17
Site web

Re: [ZF 1.8.0]Premiers tests

Sauf si je veux que la première ligne de chaque _initXXX() soit justement un appel à ma fonction de log.
Dans ce cas je ne vois pas d'autres solutions que le __construct ?

Normalement un seul appel à $this->bootstrap('Log') est nécessaire, pourquoi préconises-tu d'en faire un dans  chaque fonction _initXXX() ?
Qu'entends-tu par "dépendance entre les ressources" ?

Hors ligne

 

#18 10-05-2009 23:51:29

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

Re: [ZF 1.8.0]Premiers tests

Tu as une ressource 'view', si tu veux être sur de pouvoir appelé tes fonctions de log, tu apelles $this->bootstrap('log'). C'est une sorte de require_once. donc, même si tu en as dans plusieurrs fonction, tes logs ne seront initialisé qu'une fois


----
Gruiiik !

Hors ligne

 

#19 15-06-2009 14:24:13

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

Re: [ZF 1.8.0]Premiers tests

nORKy a écrit:

moi, ca ressemble à ca :

Code:

[production]

; ...

resources.view.doctype                     = "XHTML1_STRICT"
resources.view.encoding                    = "UTF-8"
resources.view.helperPath.My_View_Helper = "My/View/Helper"

; ...

errorHandler est une resource perso défini via _initErrorHandler() car la partie plugin du boostrap ne gère pas le passage de paramètres

J'ai aussi un :
*  _initAcl (pour la même raison que précédement)
* _initDb (J'utilise doctrine, donc, c'est une partie totalement perso)
* _initLog (mise en place des writer en fonction d'élément de config comme 'debug', et change de format de log, etc..)

Désolé de faire remonter ce post, mais je souhaitais faire remarquer que le paramètre resources.view.doctype n'est pas pris en compte lors de l'initialisation de la vue. La fonction setDoctype existe bel et bien sur l'objet Zend_View (ce qui ne se voit pas directement car cela passe par un appel à __call($name, $args) dans Zend_View_Abstract ), mais le constructeur de Zend_View, qui prend en paramètre le tableau de configuration fait le traitement de chacune des données au cas par cas, et pas du Doctype entre autres.

Ce qui fait qu'on se retrouve avec du HTML 4 Transitionnal (valeur par défaut) malgré ce paramètre mis à "XHTML1_STRICT" dans le fichier de configuration.

Je définis donc mon Doctype dans la fonction _initDoctype du bootstrap, tel le Quick start guide du Zend Framework l'indique.

Ne pensez-vous pas que ça serait une bonne petite évolution que l'on puisse définir facilement le Doctype voulu dans le fichier de configuration ?

Hors ligne

 

#20 15-06-2009 15:12:22

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

Re: [ZF 1.8.0]Premiers tests

C'est parce que j'ai créé ma propre "esource view"  ou j'ai rajouté la prise en compte de l'option doctype


----
Gruiiik !

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