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 :

Résultats différents pour mêmes actions


Sujet :

MVC PHP

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 48
    Points
    48
    Par défaut Résultats différents pour mêmes actions
    Bonjour,

    Je rencontre quelques difficultes a comprendre les resultats du code suivant. Je devrais normalement obtenir une reponse identique dans chaque cas :
    Et pourtant !

    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
    <?php
    class IndexController extends Zend_Controller_Action
    {
     
    function indexAction()
    {
    $this->view->title = "action index";
    echo "AAAAAAAAA";
    }
     
    function supprimerAction()
    {
    $this->view->title = "action supprimer";
    echo "BBBBBBBBB";
    }
     
     
    function montrerAction()
    {
    $this->view->title = "action montrer";
    echo "CCCCCCCCC";
    }
    IndexController.php se refere aux fichiers .phtml suivants:

    index.phtml
    supprimer.phtml
    montrer.phtml

    Le code de ces fichiers .phtml est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
    <head>
        <title>Un titre</title>
    </head>
    <body>
        DDDDDDD
    </body>
    </html>
    J'obiens cependant des resultats differents selon le cas:

    1 - click sur index : Affiche - DDDDDDD AAAAAAA.
    2 - click sur supprimer : Affiche -DDDDDD BBBBBBB.
    3 - click sur montrer : Affiche - Action montrer CCCCCC.

    Pour info voici le code ou se trouvent les URI a cliquer. Ce code se trouve dans layout.phtml.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <body>
    <ul id='nav'>
    <li><a href="<?php echo $this->
    url(array('controller'=>'index','action'=>'index')) ?>">Index</a></li>
    <li><a href="<?php echo $this->
    url(array('controller'=>'index','action'=>'supprimer')) ?>">Supprimer</a></li>
    <li><a href="<?php echo $this->
    url(array('controller'=>'index','action'=>'montrer')) ?>">Montrer</a></li>
    </ul>
    </body>
    Pour resumer le code affiche soit le message $title soit le contenu de la page .phtml.


    Y-a-t-il une evidence qui m'echappe ?
    J'avoue ne pas savoir dans quelle direction pousser mes recherches pour resoudre ce probleme.
    Votre aide et votre competence me seraient bien utile.

  2. #2
    Membre régulier
    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2008
    Messages : 139
    Points : 92
    Points
    92
    Par défaut
    salut ,
    peux tu poster le code de ton layout.phtml ? ,ça aidera beaucoup a analyser le probleme ,merci

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    Voici le contenu du layout.phtml, un grand classique en sorte...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html>
    <head>
    <title>Titre</title>
    <link rel="stylesheet" type="text/css" href="<?php echo $this->baseUrl();?>/public/css/site.css" />
    </head>
     
    <body>
    <?php echo $this->partial('reprox/header.phtml'); ?>
        <div id="content">
            <?php echo $this->layout()->content; ?>
        </div>
    </body>
    </html>
    Le code css et le header.phtml s'affichent correctement.

  4. #4
    Membre régulier
    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2008
    Messages : 139
    Points : 92
    Points
    92
    Par défaut
    salut ,
    a ce que je sache ,les echo dans le controller peuvent perturber le fonctionnement normal de zend_controller et provoquer un comportement inattendu ,car il est conçu pour une architecture mvc donc tout ce qui est affichage doit se loger dans le dossier views.

    pour des cas particuliers de testes comme tu veux faire tu peut choisir de deactiver le viewRender et le layout pour une action specifique (pour tout un controleur je ne suis pas sur) ,cependant tu peux utiliser echo et ça fonctionnera normallement car il y aura pas creation d'un objet view et l'aide de vue viewRender est deactiver (pas la peine de .phml) l'affichage sera dedié au controleur .

    mais ce que tu fait c'est les deux en meme temps , l'objet view est là avec un echo dans le controleur , je ne sais pas exactement comment zend fait pour un tel cas .

    j'espere que ça pourra t'aider

  5. #5
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    merci pour la reponse malheureusement elle n'apporte pas d'eau a mon moulin.
    Les lignes comme echo "AAAAAAAAA"; ont ete rajoutees uniquement pour l'exemple et confirmer que Indexcontroller traite une information, cette ligne de code n'est en soi pas indispensable.
    En la retirant le probleme reste entier:
    soit la ligne $this->view->title = "action ..."; est traitee et affiche le texte: 'action ...', mais dans ce cas le contenu de l'action .phtml n'est pas traite ou inversement
    $this->view->title = "action ..."; n'est pas traite et l'action .phtml affiche son contenu soit 'DDDDDDD'.

  6. #6
    Membre régulier
    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2008
    Messages : 139
    Points : 92
    Points
    92
    Par défaut
    la logique classique est le suivant :
    tout ce qui est commun est mis dans le layout comme $this->title que je ne vois pas dans tes scripts . $this refere l'objet view , apres l'execution de l'action, layout()->content contient la vue rendu par ton script nomAction.phtml ainsi tu peux afficher ce rendu n'importe où dans ton layout .

    alors pour afficher le $this->view->title il doit forcement exister un $this->title dans tes scripts de vues nomAction.phtml ,il est dans le header ,c'est ça ?

    si oui enleve le partial et remplace le par $this->title ,essaie ça et on verra

  7. #7
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    Encore merci pour ton aide.

    Le probleme est repare. Il m'aura fallu trois jours pour me rendre compte, que je faisais mes tests sur des fichiers portant le meme nom mais appartenant a des repertoires differents.

    Toutes tes remarques etaient evidentes et m'ont permis enfin de mettre le doigt sur le probleme.

    Merci et a charge de revanche.

  8. #8
    Membre régulier
    Homme Profil pro
    Software engineer
    Inscrit en
    Août 2008
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Software engineer

    Informations forums :
    Inscription : Août 2008
    Messages : 139
    Points : 92
    Points
    92
    Par défaut
    bien , j'ai serieusement pensé a vous demander de zipper le projet et l'envoyer ,car quelque chose de classique doit marcher sans probleme ,mais heureusement le probleme est reglé .
    "donner"(aider en quelque sorte) c'est plutot un plaisir

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/07/2009, 08h57
  2. Réponses: 5
    Dernier message: 17/04/2007, 06h27
  3. gettime 2 résultats différents pour une meme date
    Par krolineeee dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 05/03/2007, 14h36
  4. [Configuration] Valeurs différentes pour même code sur 2 serveurs
    Par Xris dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 12/02/2007, 01h40
  5. Réponses: 5
    Dernier message: 04/01/2006, 19h34

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