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

MVC PHP Discussion :

Initialisation et bootstrap


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut Initialisation et bootstrap
    Bonsoir tous le monde,
    J'ai modifié ma structure pour avoir quelque chose de plus clair afin d'apprendre à utiliser le zend framework.
    cependant après avoir changer la configuration de la hiérarchie, j'ai modifier le boostrap et stupeur plus rien ne fonctionne ????
    J'ai beau cherché je ne trouve pas pk même si j'ai un doute sur l'initialisation des controllers....
    exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in /Applications/MAMP/htdocs/library/Zend/Controller/Dispatcher/Standard.php:249 Stack trace: #0 /Applications/MAMP/htdocs/library/Zend/Controller/Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /Applications/MAMP/htdocs/zend-encoder/application/bootstrap.php(60): Zend_Controller_Front->dispatch() #2 /Applications/MAMP/htdocs/zend-encoder/public/index.php(8): require('/Applications/M...') #3 {main}
    Mon fichier 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
    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
    $rootPath = dirname(dirname(__FILE__));
    $appPath  = $rootPath . DIRECTORY_SEPARATOR . 'application';
    $confPath = $appPath  . DIRECTORY_SEPARATOR . 'config';
    // configuration de l'include_path PHP pour l'autoload
    set_include_path(get_include_path() . 
    PATH_SEPARATOR . $appPath . 
    PATH_SEPARATOR . $rootPath . DIRECTORY_SEPARATOR . 'lib' . 
    PATH_SEPARATOR . $appPath  . DIRECTORY_SEPARATOR . 'models');
    //require_once 'Initializer.php';
    require_once "Zend/Loader.php";
    require_once('Zend/Config/Ini.php');
     
    // Set up autoload.
    Zend_Loader::registerAutoload(); 
     
    // définition de constantes pour l'application
    define('APP_MODE', 'dev');
    define('CACHE_LIFETIME', 3600);
     
    // Prepare the front controller. 
    $frontController = Zend_Controller_Front::getInstance(); 
    // ********************* CONFIG *****************************
     
    // Récupération des objets de configuration
    $configMain    = new Zend_Config_Ini($confPath . DIRECTORY_SEPARATOR . 'zend_config_ini.ini', APP_MODE);
    // Change to 'production' parameter under production environemtn
    $frontController->registerPlugin(new Initializer('dev'));    
     
    // Dispatch the request using the front controller. 
    // ************************ MVC ****************************************
     
    // Configuration du contrôleur frontal
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->setControllerDirectory($appPath . '/controllers');
    $frontController->throwExceptions(false); // par défaut
     
    // propagation de paramètres dans le système MVC
    //$frontController->setParam('debug', $configMain->debug);
    //$frontController->setParam('locale', $locale);
    $frontController->setParam('config', $configMain);
    // **************************** LAYOUTS ***********************************
     
    Zend_Layout::startMvc(array('layoutPath' => $appPath . '/views/layouts'));
    // ******************************** DISPATCH ******************************
    try {
        $frontController->dispatch();
    } catch (Zend_Exception $e) {
        echo ($e);
    }
    La hierarchie est simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /lib
    /application
                   /config
                   /models
                   /controllers
                   /views
                                 /filters
                                 /scripts
                                 /layouts
                                 /helpers
    /public

  2. #2
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Peux-tu nous donner la liste des fichiers présent dans ton répertoire controllers, s'il-te-plaît ?
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Pour l'instant j'ai ErrorController, IndexController, TestController
    Aurai je oublier d'instancier le mode MVC ?

  4. #4
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Citation Envoyé par gtraxx Voir le message
    Pour l'instant j'ai ErrorController, IndexController, TestController
    Aurai je oublier d'instancier le mode MVC ?
    Le mode MVC est en place. Le message d'erreur et la trace le confirme. Mais j'ai plutôt l'impression d'une étourderie. Tu n'aurais pas écrit le nom de ta classe de façon erronée ? (Oubli d'un r dans errorController ou quelquechose comme cela...)

    Typiquement cette erreur survient quand il ne trouve pas le contrôleur adéquat. Et en l'occurence, il ne trouve pas le fichier (attention au nom du fichier et à la casse sous linux) Quand il trouve le fichier mais pas la bonne classe, le message est différent.(Invalid controller class). L'erreur vient donc du fichier.

    En conclusion, soit tu ne pointes pas vers le bon répertoire (Au vu de ton bootstrap, je dirais que tout va bien), soit ton nom de fichier du contrôleur error est mal orthographié.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Ce ne serai pas les vue qu'il ne trouve pas ?
    En faites dans View j'ai un dossier script contenant error, index, test et je pense que cela viendrai de la !!
    Mais je ne sais pas comment l'initialiser car dans le message d'erreur on vois distinctement qu'il ne trouve pas error ???
    J'ai vérifier les controllers et ils sont correctement écris.
    Pour info je suis sous Mac osx

    Voici mon controllers d'erreurs :
    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
    require_once 'Zend/Controller/Action.php';
     
    class ErrorController extends Zend_Controller_Action
    {
     
        /**
         * This action handles  
         *    - Application errors
         *    - Errors in the controller chain arising from missing 
         *      controller classes and/or action methods
         */
        public function errorAction()
        {
            $errors = $this->_getParam('error_handler');
            switch ($errors->type) {
                case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
                case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
                    // 404 error -- controller or action not found                
                    $this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found');
                    $this->view->title = 'HTTP/1.1 404 Not Found';
                    break;
                default:
                    // application error; display error page, but don't change                
                    // status code
                    $this->view->title = 'Application Error';
                    break;
            }
     
            $this->view->message = $errors->exception;
        }
    }

  6. #6
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Non c'est bien le contrôleur qu'il ne trouve pas.

    Si c'était la vue on aurait une erreur de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Uncaught exception 'Zend_View_Exception' with message 'script 'vue/matrice.phtml' not found in path (/home/alexandre/)
    On va déjà éliminer cette piste. Peux-tu ajouter temporairemen cette ligne de code avant l'appel au frontController ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($appPath . '/controllers');die();
    Ensuite liste le contenu de ce répertoire avec un ls -al depuis la console et colle nous le résultat.

    PS : Mac OS X fonctionnant sous un noyau linux, ls fichiers doivent être sensibles à la casse, attention aux minuscules et majuscules de ton nom de fichier.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

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

Discussions similaires

  1. [ZF 1.9] Initialiser la classe Bootstrap
    Par mister_sood dans le forum Autres composants
    Réponses: 2
    Dernier message: 11/09/2009, 16h46
  2. [ZF 1.8] Initialisation modulaire et bootstraping
    Par s.n.a.f.u dans le forum MVC
    Réponses: 12
    Dernier message: 27/07/2009, 12h45
  3. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12
  4. Initialisation de XMLModule
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 10
    Dernier message: 01/04/2003, 10h08
  5. initialisation Directinput avec delphi
    Par Madmaxx dans le forum DirectX
    Réponses: 1
    Dernier message: 21/02/2003, 17h37

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