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 :

probleme de routeur avec utilisation des modules [ZF 1.9]


Sujet :

MVC PHP

  1. #1
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut probleme de routeur avec utilisation des modules
    Bonjour,

    après lecture du super tuto :
    http://julien-pauli.developpez.com/t...d-application/
    j'ai modifié mon application afin d'utiliser l'objet application, qui, il est vrai, simplifie grandement les choses.

    J'en ai profité pour restructurer les dossiers en mettant en place des modules.

    Mais voilà, si le routeur trouve bien le chemin par défaut (indexAction dans </application/modules/default/controllers/indexControllers.php>) , je ne suis plus en mesure d'accéder à la page de login appelée par l'indexAction du controleur en question.

    L'ancien chemin login/login ne fonctionne plus pour accéder à loginAction dans </application/modules/login/controllers/indexControllers.php> et j'ai l'erreur :
    <Action "loginlogin" does not exist and was not trapped in __call()>

    Pour info voici le contenu de mon 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
    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
     
    ;;
    ;; Configuration generale
    ;;
     
    [production]
     
    ; initilisation du report d erreurs pour le mode production
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
     
    ; definition de la timezone
    phpsettings.date.timezone = "Europe/Paris"
     
    ; include path
    includePaths[] = APPLICATION_PATH "/../library"
     
    ; bootstrap
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
     
    ; controller
    ;;;;;;; resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
     
    ; initialisation des modules
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules[] = ""
     
    ; layout
    resources.layout.layout = "layout"
    resources.layout.layoutPath = APPLICATION_PATH "/layouts"
     
    ; views
    resources.view.encoding = "UTF-8"
     
    ; connexion a une base de donnée
    resources.db.adapter = "pdo_mysql"
    resources.db.params.host = "localhost"
    resources.db.params.dbname = "immogestion"
    resources.db.params.username = "immogestion"
    resources.db.params.password = "immogestion"
    resources.db.isDefaultTableAdapter = true
     
    ; sessions
    resources.session.save_path = APPLICATION_PATH "/../data/sessions"
    resources.session.remember_me_seconds = 43200
     
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    j'ai lu la doc Zend sur le front controller:
    http://framework.zend.com/manual/en/...ler.front.html

    qui donne comme exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
          // Set the default controller directory:
          $front->setControllerDirectory('../application/controllers');
     
          // Set several module directories at once:
          $front->setControllerDirectory(array(
               'default' => '../application/controllers',
               'blog'    => '../modules/blog/controllers',
               'news'    => '../modules/news/controllers',
           ));
     
           // Add a 'foo' module directory:
           $front->addControllerDirectory('../modules/foo/controllers', 'foo');
    Mais je crois que ca ferait double emploi avec la déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ; initialisation des modules
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules[] = ""
    dans mon application.ini

    Quelqu'un pourrait-il me mettre sur la voie ?

    Merci d'avance.

    ci dessous la structure des dossiers de mon application :
    Images attachées Images attachées  

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par SergeF Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               'default' => '../application/controllers',
    si tu as mis cette ligne ça veut dire que les contrôleurs du module "default" sont dans le répertoire habituel et non dans "modules/default"

  3. #3
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut
    Merci pour la réponse,

    mais en fait le paragraphe de code contenant cette ligne est un exemple.

    J'utilise en fait le fichier application.ini ou on peut trouver cette déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ; initialisation des modules
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules[] = ""
    Mais malgré cela, quelque chose doit manquer ...

  4. #4
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    quelle est l'URL à laquelle tu essayes d'accéder ?

  5. #5
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut
    Par exemple dans IndexController.php du module login :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public function indexAction() {
            // action body
        	if ($this->_session->authenticated) {
    			$this->_forward ( 'login/logout' );
    		} else {
    			$this->_forward ( 'login/login' );
    		}
        }
    Par dépits j'ai aussi essayé

    $this->_forward ( '/login/login' );
    $this->_forward ( 'login/login/login' );
    $this->_forward ( '/login/login/login' ); // (module/controller/action)



    Voila, voila ...

  6. #6
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    si tu veux changer d'URL il vaut mieux utiliser la méthode "_redirect" :

  7. #7
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut
    Après remplacement avec des _forward par des _redirect, je n'ai plus l'erreur :
    <Action "loginlogin" does not exist and was not trapped in __call()>
    Mais le routeur ne trouve pas son chemin.

    Si j'utilise la fonction debugUrl, en passant le chemin vers un module (en l'occurence "login") donc en entrant comme url :

    http://localhost:8080/zfLOB/public : ca fonctionne

    http://localhost:8080/zfLOB/public/login :
    ou
    http://localhost:8080/zfLOB/public/login/login :
    ou
    http://localhost:8080/zfLOB/public/login/login/login : ca ne fonctionne pas

    Ce qui m'étonne, c'est que le routeur trouve bien le contrôleur par défaut, qui est aussi dans un module ...

    Je suis à la recherche d'un exemple d'application basée sur l'utilisation de Zend_Application et des modules ...

    Merci pour toute info.

  8. #8
    Membre confirmé
    Profil pro
    csdcsdc
    Inscrit en
    Juin 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : csdcsdc

    Informations forums :
    Inscription : Juin 2004
    Messages : 83
    Par défaut
    réponse donnée sur un autre post (http://www.developpez.net/forums/d87...ratiques-zend/)


    d'autre part et pour info:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	$this->_forward ( 'login', 'index', 'user' );
    est correcte alors que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	$this->_forward ( '/user/index/login' );
    ne l'est pas.

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

Discussions similaires

  1. problème de timeout avec utilisation des modules dbus & gobject
    Par Makiavelik dans le forum Général Python
    Réponses: 1
    Dernier message: 06/08/2011, 09h56
  2. Probleme avec utilisation des filtres et des modeles
    Par Djolhan dans le forum Thunderbird
    Réponses: 0
    Dernier message: 08/04/2009, 22h30
  3. Réponses: 11
    Dernier message: 22/02/2008, 21h50
  4. Réponses: 4
    Dernier message: 28/05/2006, 22h11
  5. [VB]utilisation des modules en vb
    Par zidenne dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/01/2006, 11h19

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