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

Autres composants PHP Discussion :

Question sur le Bootstrap et les Modules [ZF 1.11]


Sujet :

Autres composants PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Par défaut Question sur le Bootstrap et les Modules
    Bonjour,

    Je suis bloqué dans le développement d'un site Internet utilisant ZF 1.11, je dois faire un backoffice et un frontoffice. Dans un premier temps, j'ai fais le front, et tout fonctionne tres bien. Puis pour le backoffice, j'ai voulu utiliser les modules et c'est une autre histoire.

    La documentation ZF est tres mal fichu car on ne comprend jamais si on doit travailler dans le fichier index.php (du dossier public), dans le bootstrap du dossier application ou ceux des modules ou enfin dans les controllers.

    Mes problemes sont les suivants :
    - Je ne peux pas recuperer les variables du bootstrap dans mon layout.phtml. Pourtant ca fonctionnait avant que j'implement les modules. Mais $this->layout()->variable renvoie toujours null
    - Je ne peux pas acceder a mon action Index du controller Index dans le module Admin, j'ai ce message d'erreur.


    An error occurred
    Page not found
    Exception information:

    Message: Invalid controller specified (index)
    Stack trace:

    #0 E:\Servers\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #1 E:\Servers\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #2 E:\Servers\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #3 E:\src\cedar.local\public\index.php(26): Zend_Application->run()
    #4 {main}

    Request Parameters:

    array (
    'module' => 'admin',
    'controller' => 'index',
    'action' => 'index',
    )
    Pour faire fonctionner les modules, voici comment mon fichier application.ini

    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
    [production]
    ;Debug Output
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
     
    ;Include Path
    includePaths.library = APPLICATION_PATH "/../library"
     
    ;Modules
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules[] =
    resources.frontController.params.prefixDefaultModule = "1"
    resources.frontController.defaultModule = "default"
     
    # Front
    ;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
    resources.frontController.params.displayExceptions = 0
     
    # Layout
    resources.layout.layout = "layout"
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
     
    ;view
    resources.view.encoding = "UTF-8"
    resources.view[] =
    J'ai supprimé le bootstrap de mon dossier application et j'ai deux bootstrap dans mes dossiers modules :

    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
    <?php
    // /application/modules/default/Bootstrap.php
    class Default_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    	protected function _initAutoload()
    	{
    		$autoLoader = new Zend_Application_Module_Autoloader(
    		array(
    			'basePath' => APPLICATION_PATH,
    			'namespace' => '',
    			'resourceTypes' => array(
    				'form' => array(
    					'path' => 'forms/',
    					'namespace' => 'Form_',),
    				'validator' => array(
    					'path' => 'validators/',
    					'namespace' => 'Validate_',)	,
    				'model' => array(
    					'path' => 'models/',
    					'namespace' => 'Model_'),
    		))
    		);
    		// Return it so that it can be stored by the bootstrap
    		return $autoLoader;
    	}
     
    	protected function _initMenus(){
    		$view = $this->getResource('view');
     
    		// Main Menu
    		$menu = ($_SERVER['REQUEST_URI']=='/user/login') ?'user':'';
    		if($menu=='')
    		$menu = (substr($_SERVER['REQUEST_URI'], 1, 4)=='blog') ?'blog':'';
    		$view->menu = $menu;
     
    		// SubMenu
    		$view->submenu = 'accueil';
    		$config = new Zend_Config_Ini(APPLICATION_INI, APPLICATION_ENV);
    		$db = Zend_Db::factory($config->get('resources')->db);
    		$rubriques = new Model_Rubriques($db);
    		$view->rubriques = $rubriques->getAllNameToURL();
    	}
    }
    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
    <?php
     
    // /application/modules/default/Bootstrap.php
    class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    	protected function _initAutoload()
    	{		
    		// Add autoloader empty namespace
    		$autoLoader = Zend_Loader_Autoloader::getInstance();
    		$autoLoader->registerNamespace('Application_');
     
    		//
    		$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    				'basePath' => APPLICATION_PATH,
    				'namespace' => 'Admin_',
    				'resourceTypes' => array(
    					'form' => array(
    						'path' => 'forms/',
    						'namespace' => 'Form_',),
    					'validator' => array(
    						'path' => 'validators/',
    						'namespace' => 'Validate_',),
    					'model' => array(
    						'path' => 'modules/admin/models/',
    						'namespace' => 'Model_'),
    		)));
     
    		// Return it so that it can be stored by the bootstrap
    		return $autoLoader;
    	}
    }
    Merci d'avoir lu jusqu'ici et merci d'avance pour vos reponses.

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Serait il possible d'avoir un schéma de l'architecture que tu utilise, un screenshot serait pas mal.

    Sinon pour commencer pour utiliser les modules, il te faut tout de même un bootstrap pour déclarer que tu utilise les modules ainsi qu'un dans chaque module.

    Pour ma part le core de l'application j'utilise le module default et un autre module, ce sont les seuls modules que je spécifie dans ma config

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Par défaut
    Citation Envoyé par 5h4rk Voir le message
    Serait il possible d'avoir un schéma de l'architecture que tu utilise, un screenshot serait pas mal.

    Sinon pour commencer pour utiliser les modules, il te faut tout de même un bootstrap pour déclarer que tu utilise les modules ainsi qu'un dans chaque module.

    Pour ma part le core de l'application j'utilise le module default et un autre module, ce sont les seuls modules que je spécifie dans ma config
    Nom : tree.PNG
Affichages : 157
Taille : 8,2 Ko

    Mon fichier application.ini ne suffit donc pas pour la declaration de l'utilisation de module ? Si non, peux-tu poster ton fichier application/bootstrap.php (ou plutot la fonction qui te permet d'attacher ton module au projet) ?

  4. #4
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Au niveaudes dossiers a la base de application je mets:
    - config
    - modules
    - language
    - bootstrap.php

    Ensuite dans config/application.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ;PARTIE CONTROLEUR FRONTAL
    ;Configuration de la gestion des modules
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.frontController.defaultModule = "default"
    resources.frontController.defaultControllerName = "index"
    resources.frontController.defaultAction = "index"
    ;Lecture de tous les modules
    resources.modules[] =*
    Et dans le Bootstrap :
    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
    */**
    ** * * Initialisation de l'autoloader
    ** * */
    ** *protected function _initAutoload()
    ** *{
    ** * * *//Récupération d'une instance de l'autoloader
    ** * * *$autoloader = Zend_Loader_Autoloader::getInstance();
    ** * * *//Définition du namespace de l'application
    ** * * *$autoloader->registerNamespace('SRCE');
    ** * * *//Définition du module par défaut
    ** * * *$autoloadModule = new Zend_Application_Module_Autoloader(array(
    ** * * * * *'namespace' => 'Default_',
    ** * * * * *'basePath' *=> dirname(__FILE__) . '/modules/default',
    ** * * * * *)
    ** * * *);
    ** 
    ** * * *//Ajout du module par défaut dans l'autoloader
    ** * * *$autoloader->pushAutoloader($autoloadModule,'Default_');
    ** * * *
    ** * * *//Renvoi de l'autoloader
    ** * * *return $autoloader;
    ** *}
    J ai enlever pas mal de chose car ma gestion des modules est une usine a gaz

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 24
    Par défaut
    J'ai fais les modifications, mais ca ne change malheureusement rien. Je ne peux pas acceder a mon mondule admin pourtant le bootstrap du dossier admin est bien initié. Mais j'ai cette erreur :

    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
    An error occurred
    Page not found
    Exception information:
     
    Message: Invalid controller specified (index)
    Stack trace:
     
    #0 E:\Servers\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #1 E:\Servers\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #2 E:\Servers\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #3 E:\Servers\htdocs\public\index.php(26): Zend_Application->run()
    #4 {main}  
     
    Request Parameters:
     
    array (
      'module' => 'admin',
      'controller' => 'index',
      'action' => 'index',
    )

  6. #6
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Mets nous la nouvelle architecture avec également ton controller qui pose problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Questions sur la compatibilité et les version de VB
    Par jam92400 dans le forum Discussions diverses
    Réponses: 22
    Dernier message: 08/04/2008, 16h19
  2. Questions sur la navigation dans les répertoires
    Par belle5656 dans le forum Langage
    Réponses: 86
    Dernier message: 03/11/2007, 20h44
  3. Réponses: 2
    Dernier message: 28/07/2007, 01h21
  4. 3 questions sur le web et les technologies associées
    Par amazircool dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 20/07/2007, 00h16
  5. Des questions sur le C et les jeux (et interfaces)
    Par straitch dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 02/07/2007, 17h21

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