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 :

Appel du view helper "action" dans une module ne marche pas [ZF 1.10]


Sujet :

MVC PHP

  1. #1
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut Appel du view helper "action" dans une module ne marche pas
    Bonjour,

    J'ai un petit problème avec l'aide de vue "action".

    L'arborescence de mes répertoires se trouve dans la pièce jointe "arbo.jpg".

    Dans layouts/layout.phtml je fais appel au contrôleur 'menu-principal' dans le module admin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->layout()->menuPrincipal = $this->action('index', 'menu-principal', 'admin');
    mais ca me génère le rendu du 'menu-principal' dans le module default.

    J'ai ces lignes dans application.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules[] = ""
    admin.resources.frontController.defaultControllerName = "index"
    Alors que quand je tape directement http://monsite/admin/menu-principal j'obtiens bien le rendu de 'menu-principal' dans le module admin dans le contenu du layout.

    Quelqu'un peut m'aider?
    Merci d'avance.
    Images attachées Images attachées  
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Bizarre, c'est comme si ton module admin n'était pas connu quand tu utilises ton aide de vue action...

    Peux tu vérifier en ajoutant ça dant ton layout et en nous donnant le résultat ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <pre><?php var_dump(Zend_Controller_Front::getInstance()->getDispatcher()->getControllerDirectory()); ?></pre>

  3. #3
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    Merci pour la réponse,
    J'obtiens ceci en vérifiant le controller directory :
    array(2) {
    ["default"]=>
    string(43) "C:\wamp\www\monsite\application/controllers"
    ["admin"]=>
    string(57) "C:\wamp\www\monsite\application/modules\admin\controllers"
    }
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bon alors je ne pense pas que ton problème vienne du code que tu nous a montré.

    Si tu affiches directement dans ton layout le résultat de l'aide de vue action, ça devrait afficher le résultat de l'action index du contrôleur MenuPrincipal du module admin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $this->action('index', 'menu-principal', 'admin');
    Je soupçonne plutôt une mise à jour de ton segment de layout menuPrincipal avant son affichage...

    Je suppose que selon les cas tu affiches le menu du module admin ou du module par défaut ? Comment choisis-tu le menu à afficher ?

  5. #5
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    J'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $this->action('index', 'menu-principal', 'admin');
    et ca marche.
    Mais je ne comprends pas pourquoi quand je met le test dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $moduleName = Sp_Static::getRequest()->getModuleName();
    switch($moduleName)
    {
        case 'admin' :
            echo 'Ca passe par ici';
            $this->layout()->menuPrincipal = $this->action('index', 'menu-principal', 'admin');
            $logoSrc = $this->spBaseUrl('images/logo_admin.jpg');
            break;
        default :
            $this->layout()->menuPrincipal = $this->action('index', 'menu-principal', 'default');
            $logoSrc = $this->spBaseUrl('images/logo_front.jpg');
    }
    ensuite je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $this->layout()->menuPrincipal;
    ca passe très bien dans "case : 'admin' mais c'est le contrôleur du module par défaut qui est appelé (j'ai vérifié en le modifiant, c'est bien lui qui est appelé)

    Bon je ne sais pas pourquoi, je suis curieux de comprendre mais je vais utiliser directement echo en attendant.
    En tout cas merci de votre aide, a+.
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  6. #6
    Membre habitué Avatar de ilalaina
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 187
    Points
    187
    Par défaut
    Re,
    Je suis vraiment désolé du temps que je vous ai fait perdre Eusebe.
    Je n'ai pas remarqué que plus bas j'ai répété une ligne de code une deuxième fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->layout()->menuPrincipal = $this->action('index', 'menu-principal', 'default');
    Mais ca m'a permis d'apprendre plusieurs choses sur les modules en creusant, et 1 point de plus sur le débogage
    Merci.
    " ... On naît, on vit, on meurt, mais exister est un honneur ... "

  7. #7
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    A quel endroit fais-tu ton test ?
    (un plugin ?)

    Je ne serais pas étonné qu'il soit effectué plusieurs fois... et que son dernier passage soit pour une requête sur le module par défaut... Ajoutes simplement un test comme tu l'as déjà fait pour en avoir le coeur net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    switch($moduleName)
    {
        case 'admin' :
            echo 'module admin';
            $this->layout()->menuPrincipal = $this->action('index', 'menu-principal', 'admin');
            $logoSrc = $this->spBaseUrl('images/logo_admin.jpg');
            break;
        default :
            echo 'autre module';
            $this->layout()->menuPrincipal = $this->action('index', 'menu-principal', 'default');
            $logoSrc = $this->spBaseUrl('images/logo_front.jpg');
    }

  8. #8
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par ilalaina Voir le message
    Je suis vraiment désolé du temps que je vous ai fait perdre Eusebe.
    Y'a pas de mal, ça m'a moi aussi permis de creuser quelques fonctionnalités
    Citation Envoyé par ilalaina Voir le message
    Je n'ai pas remarqué que plus bas j'ai répété une ligne de code une deuxième fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->layout()->menuPrincipal = $this->action('index', 'menu-principal', 'default');
    Mais ca m'a permis d'apprendre plusieurs choses sur les modules en creusant, et 1 point de plus sur le débogage
    Eh bien c'est rentré dans l'ordre !

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

Discussions similaires

  1. PB VBA : ecriture dans une feuille active => marche pas !
    Par MeHo_ dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/01/2008, 16h47

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