IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Premiers pas avec Zend_Application [Tutoriel]


Sujet :

Zend Framework PHP

  1. #21
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Ca marche chez toi le coup des layouts dans :
    ?

    Chez moi pas du tout ...

  2. #22
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Par défaut
    Je vais regarder, je m'y suis pas remis depuis, je gère plusieurs projets en même temps.

    J'ai trouvé pour le chargement des classes "ancienne méthode", pour les layout, faut peut être faire pareil.

    J'avais réussi avec la nouvelle méthode, sans les modules, donc pour l'instant c'est pas clair.

    Dès que j'ai trouvé, je posterais ici.

    Ca t'a aidé mon dernier post ? tu as pu régler le souci ?

  3. #23
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    C'est ok, j'ai trouve.

    La bonne synthaxe est :
    resources.layout.layoutPath.<nom_module> = ...

    Par exemple pour mon application.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ; Layout
    resources.layout.layout = "layout"
    resources.layout.layoutPath.default = APPLICATION_PATH "/modules/default/layouts/scripts"
    resources.layout.layoutPath.admin = APPLICATION_PATH "/modules/admin/layouts/scripts"
    EDIT :

    Arf, non il prend la derniere entree comme layout dans les 2 contextes ...

    EDIT :
    Je regarde petit a petit, j'ai aps bien etudie ton denrier post, je regarde en ce moment

  4. #24
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    En fait, au niveau du bootstrap, c'est quand je met des bootstrap dans les modules que ca devient n'importe quoi au niveau des erreurs.

    Lorsque je laisse le "principal" (dans application), tout fonctionne (mis a part qu'il trouve pas mes classes modele dans mes dossiers de modules). Il doit me manquer quelque chose ...

  5. #25
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Par défaut
    Ouais, merci du retour. Je vais m'y remettre la semaine prochaine, je te tiens au courant au gré de mes trouvailles.

    J'ai pas le temps ce WE, mais j'y reviens très vite.

  6. #26
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Par défaut
    Salut,

    J'ai pas de souci en laissant les Boostrap vides dans les modules. Tout va bien, je peux me consacrer à mes layout tranquillement pour bien comprendre comment ça marche.

  7. #27
    Membre très actif
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Par défaut
    Salut,

    Tu peux poster tes bootstrap (le principal et ceux des modules) et ton application.ini stp ?

    Merci d'avance

  8. #28
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Par défaut
    Voili voilou (en commentaire dans le boostrap, tu as du code qui a été remplacé directement dans le fichier .INI, le rendant de fait inutile dans le Boostrap. Après c'est un choix de le placer dans l'un ou dans l'autre) :

    Boostrap principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
     
    /**
     * Application bootstrap
     * 
     * @uses    Zend_Application_Bootstrap_Bootstrap
     * @package QuickStart
     */
     
    //var_dump($this->getOptions());
     
    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 _initAutoload()
        {
    	// On enregistre les modules (les parties de notre application), souvenez-vous : Backend et Frontend
            $moduleLoader = new Zend_Application_Module_Autoloader(array(
                'namespace' => '',
                'basePath' => APPLICATION_PATH));
            return $moduleLoader;
        }*/
     
        protected function _initAutoload()
        {
    	// On enregistre les modules (les parties de notre application), souvenez-vous : Backend et Frontend
            $autoloader = new Zend_Application_Module_Autoloader(
            array(
                'namespace' => 'Default_',
                'basePath' => APPLICATION_PATH . '/modules/default'),
            array(
                'namespace' => 'Admin_',
                'basePath' => APPLICATION_PATH . '/modules/admin')
            );
            $autoloader = Zend_Loader_Autoloader::getInstance();
            $autoloader->registerNamespace('ZC_');
            return $autoloader;
        }
     
        /*protected function _initControllerPlugins()
        {
            $frontController = Zend_Controller_Front::getInstance();
            $frontController->registerPlugin(new ZC_Controller_Plugin_AssetGrabber());
        } Déjà paramétré dans le .INI */
     
        protected function _initSession()
        {
    	// On initialise la session
            $session = new Zend_Session_Namespace('cms', true);
    	return $session;
        }
     
        protected function _initView()
        {
    	// Initialisation de la vue et des helpers de vue
            $view = new Zend_View();
            $view->doctype('XHTML1_STRICT');
            $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');
            // On ajoute le dossier des helpers
            $view->addHelperPath(APPLICATION_PATH . '/modules/default/views/helpers');
            $view->addHelperPath(APPLICATION_PATH . '/modules/admin/views/helpers');
            // On charge l'helper qui va se charger de la vue
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
            $viewRenderer->setView($view);
            return $view;
        }
    }
    Boostrap Default_ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    /**
     * Application bootstrap du répertoire par défault
     * 
     * @uses    Zend_Application_Module_Bootstrap
     * @package QuickStart
     */
    class Default_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    }
    Boostrap Admin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    /**
     * Application bootstrap du répertoire par défault
     * 
     * @uses    Zend_Application_Module_Bootstrap
     * @package QuickStart
     */
    class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    }
    Mon arborescence n'a pas changé depuis mon premier post.

    Autres choses qui peuvent avoir leur importance :

    Pour accéder à l'application via -http://tonprojet/ et pas via -http://localhost/tonprojet/public/

    Dans le httpd.conf de Apache, ajouter un virtual host :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #VIRTUAL HOST A MODIFIER POUR LE PROJET CMS
    <VirtualHost 127.0.0.1:80>
      ServerName   tonprojet
     
      DocumentRoot c:/wamp/www/tonprojet/public
      <Directory "c:/wamp/www/tonprojet/public">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
      </Directory>
     
    </VirtualHost>
    Enfin, pour ceux qui sont sous Windows, remplacer la ligne suivante comme indiqué dans le fichier c:\Windows\System32\drivers\etc\hosts

    Remplacer 127.0.0.1 localhost par 127.0.0.1 tonprojet

    Pour simuler un multidomaine, ajouter autant de lignes que nécessaire :

    127.0.0.1 tonprojet2
    127.0.0.1 tonprojet3

    [...] Etc

    J'espère que tout est clair, parce qu'il m'a fallut un certain temps pour comprendre et rassembler ces informations. Maintenant tout fonctionne, je peux avancer sur mon projet.

    Allez, encore un petit truc, j'ai rajouté une arborescence dans library, on a donc :

    library\ZC\Controller\Plugin\AssetGrabber.php
    library\Zend\

    C'est à cela que fait allusion le code commenté dans le boostrap et le code ZC_ dans le .INI

    J'ai pas encore bien compris à quoi sert ce fichier AssetGrabber.php, mais il semble important pour la suite, les authentifications...

    Voici donc le code du plugin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    /**
     * Description of AssetGrabber
     *
     * @author jon
     */
    class ZC_Controller_Plugin_AssetGrabber
        extends Zend_Controller_Plugin_Abstract
    {
        public function dispatchLoopStartup (Zend_Controller_Request_Abstract $request)
        {
            if ($request->getControllerName() != 'assets')
                return;
            $session = new Zend_Session_Namespace('auth');
            if(! $session->authenticated)
                throw new Exception('Not authenticated!');
     
            echo file_get_contents(APPLICATION_PATH . '/../assets/' . $request->getActionName());
     
            exit;
        }
     
    }
    Bon dev', et je reviendrais prochainement....

    Poser d'autres questions

  9. #29
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Par défaut
    Ah oui, autre chose.

    Avec cette méthode, lorsque j'appelle les class (models) du dossier par défaut, je laisse bien le préfix Default_ ce qui diffère de la méthode fournie par Julien Pauli dans sont tuto que je n'ai pas réussi à faire fonctionner correctement (voir un de mes posts plus ancien).

    +A+

  10. #30
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 1
    Par défaut
    Je voudrais savoir comment trouver les options pour les ressources dans le fichier.ini, du style resources.{plugin}.{option}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // ex : Pour le layout
    resources.layout.layout.

    Pour la ressource FrontController c'est évident les options sont visible dans Zend_Applicatin_Resource_Frontcontroller,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    . . . .
    foreach ($this->getOptions() as $key => $value) {
                switch (strtolower($key)) {
                    case 'controllerdirectory':
                        if (is_string($value)) {
                            $front->setControllerDirectory($value);
                        } elseif (is_array($value)) {
                            foreach ($value as $module => $directory) {
                                $front->addControllerDirectory($directory, $module);
                            }
                        }
                        break;
     
                    case 'modulecontrollerdirectoryname':
                        $front->setModuleControllerDirectoryName($value);
                        break;
     
                    case 'moduledirectory':
                        $front->addModuleDirectory($value);
                        break;
     
                    case 'defaultcontrollername':
                        $front->setDefaultControllerName($value);
                        break;
     
                    case 'defaultaction':
                        $front->setDefaultAction($value);
                        break;
     
                    case 'defaultmodule':
                        $front->setDefaultModule($value);
                        break;
     
                    case 'baseurl':
                        if (!empty($value)) {
                            $front->setBaseUrl($value);
                        }
                        break;
     
                    case 'params':
                        $front->setParams($value);
                        break;
     
                    case 'plugins':
                        foreach ((array) $value as $pluginClass) {
                            $plugin = new $pluginClass();
                            $front->registerPlugin($plugin);
                        }
                        break;
     
                    case 'throwexceptions':
                        $front->throwExceptions((bool) $value);
                        break;
     
                    case 'actionhelperpaths':
                        if (is_array($value)) {
                            foreach ($value as $helperPrefix => $helperPath) {
                                Zend_Controller_Action_HelperBroker::addPath($helperPath, $helperPrefix);
                            }
                        }
                        break;
     
                    default:
                        $front->setParam($key, $value);
                        break;
                }
            }
     
    . . .
    mais quand je lis la classe Zend_Application_Resource_Layout, les options n'y figure pas et j'ai relu la documentation, mais j'ai pas trouvé.

    Merci de m'éclairer sur ce point.

  11. #31
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Par défaut
    Bonsoir,

    Je remonte ce vieux sujet pour avoir vos avis concernant un point précis du passage d'un projet avec bootstrap "classique" à un projet basé sur Zend_Application.

    J'utilisais précédemment des plugins ajoutés au frontController qui nécessitaient leurs propres paramètres d'initialisation. Hors, lorsque l'on utilise Zend_Application et que l'on tente d'ajouter des plugins au frontController via le fichier application.ini et le mécanisme de ressources, le plugin est forcément instancié sans argument et il est impossible de passer le moindre argument avec ce fichier .ini.

    À votre avis, serait-il préférable de créer une nouvelle ressource pour ce genre de plugins sachant qu'elle ferait probablement double emploi avec la ressource frontController, ou de changer la façon dont sont récupérés les paramètres (bien qu'il serait tout de même plus commode de les définir via le fichier .ini) ?

    Si vous voyez d'autres solutions possibles, n'hésitez pas merci.

Discussions similaires

  1. [ZF 1.10] Tuto' : "Zend Framework : Premiers pas avec Zend_Application"
    Par DarkSeiryu dans le forum MVC
    Réponses: 5
    Dernier message: 07/11/2010, 18h30
  2. premier pas avec java
    Par single dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 05/08/2007, 09h41
  3. Premier pas avec net : gestion des fichiers ini
    Par fredppp dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 30/03/2007, 11h24
  4. Premier pas avec PHP
    Par ouahid32 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/02/2007, 10h34
  5. [debutant] premier pas avec le SDK directX9
    Par arno2004 dans le forum DirectX
    Réponses: 6
    Dernier message: 27/05/2004, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo