Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#26 27-02-2009 12:09:34

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

Si, il est dans la vue de mon action.

Mais tu m'as dis que

Code:

$this->_helper->layout->disableLayout();

ne se faisait que pour une action. Ce code ($this->_helper->layout->disableLayout()wink je l'ai placé dans loginAction de AuthController. Et l'action que je n'arrive pas à afficher est l'action indexAction de SaisiesController. Donc, d'après tes dires, le layout ne devrait pas être désactivé pour indexAction de SaisiesController. Donc, il y a un soucis quelquepart, et je n'arrive pas à en déterminer la cause.


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#27 27-02-2009 12:33:14

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

je pense que c'est pour de l'ajax, je te conseil de faire d'abord de faire fonctionner ton site sans ajax, javascript
(au cas ou un utilisateur aurrai désactiver le js, pas de polémique smile ) et ensuite de rajouter le javascipt, c'est plus simple à débugger.

montre le code de tes controllers et de ton layout.

Dernière modification par baboune (27-02-2009 12:34:31)

Hors ligne

 

#28 27-02-2009 13:06:37

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

Je veux bien te montrer le code de mon controller SaisiesController, mais y a environ 1000 lignes de code...

Voici mon code de mon layout :

Code:

    <?php if($_SESSION['acl']['role'] != 'visiteur')
        {
            //Définition du Doctype, des balises meta/title/script/link
            
            echo $this->doctype();
            
            $this->headTitle($this->escape($this->title));
            
            $this->headScript()->appendFile('http://localhost:9009/document_root/scripts/extjs/adapter/ext/ext-base.js');
            $this->headScript()->appendFile('http://localhost:9009/document_root/scripts/extjs/ext-all.js');
            $this->headScript()->appendFile('http://localhost:9009/document_root/js/prototype.js');
            
            $this->headLink()->appendStylesheet('http://localhost:9009/document_root/styles/site.css');
            $this->headLink()->appendStylesheet('http://localhost:9009/document_root/scripts/extjs/resources/css/ext-all.css');
            $this->headLink()->appendStylesheet('http://localhost:9009/document_root/styles/print.css', 'print');
                
?>
<html>
    <head>
        <?php      
                
                echo $this->headTitle();        
                echo $this->headMeta();
                echo $this->headLink();
                echo $this->headScript(); 
          ?>
            <script type="text/javascript">
                Ext.onReady(function(){
                
                    new Ext.ToolTip({
                        target: 'tip_change_profil',
                        title: 'Changer de profil',
                        width:200,
                        html: 'Cliquez ici pour emprunter un autre profil',
                        trackMouse:true
                    });
                    
                    new Ext.ToolTip({
                        target: 'tip_connexion',
                        title: 'Déconnexion',
                        width:150,
                        html: 'Cliquez ici pour vous déconnecter',
                        trackMouse:true
                    });
                    
                    new Ext.ToolTip({
                        target: 'tip_revenir',
                        title: 'Profil',
                        width:150,
                        html: 'Revenir au profil d\'origine',
                        trackMouse:true
                    });
                
                    Ext.QuickTips.init();
                
                });    
                
                function refreshMonth()
                {
                     var url = "<?php print ROOT_URL; ?>/check-year/";
        
                      var myAjax = new Ajax.Request(
                      url,
                      {
                        method: 'get',
                        parameters: {year: $('menu_selected_year').value},
                        onComplete: renderResults,
                        onFailure: function(){ alert('Erreur'); }
                      });
                  }
                  
                  function renderResults(response)
                {
                    eval(response.responseText);
                }
            </script>
        
            <?php } ?>
    </head>
    <body onLoad="hide_loading_layer();"> 
        
            <?php if ($_SESSION['acl']['role'] != 'visiteur')
            {
                /*On affiche le header et le menu commun à toutes les pages, sauf pour la page
                  d'authentification.*/
                echo $this->partial('header.phtml');
                echo $this->partial('menu.phtml', array('menu' => $this->menu));
            }
            //On affiche la vue de l'action en cours.
            echo $this->layout()->content ;            
            ?>
    </body>
</html>

Je te mets quand même mon code du controller SaisiesController ?

Edit :

Voici la partie où je gère le rendu de l'action indexAction de SaisiesController

Code:

$this->view->menu = 'saisies';
        $this->view->commentairesTemplate = 'scripts/saisies/commentaires.phtml';
        $this->view->navigationTemplate = 'scripts/saisies/navigation.phtml';
        
        
        if($tpl == 'index_statistique') 
            $this->view->actionTemplate = 'scripts/saisies/index_statistique.phtml';
         else 
            $this->view->actionTemplate = 'scripts/saisies/index.phtml';
            
        
        if ($window == 'popup')
            print $this->view->render('scripts/site-popup.phtml');

Et voici mon AuthController loginAction où j'insère le disableLayout()

Code:

public function loginAction()
    {
        $this->_helper->layout->disableLayout();
        $view = Zend_Registry::get('view');
        /** Remet à jour la session (en cas de déconnexion) */
        if(isset($_SESSION[APP]))
            unset($_SESSION[APP]);
        if(isset($_SESSION['nav']))
            unset($_SESSION['nav']);
                
        $feedback = $login = $password = null;
        
        if (strtolower($_SERVER['REQUEST_METHOD']) == 'post')
        {    
            try 
            {
                /** Bride silencieusement l'authentifiant et le mot de passe */
                $login = trim($_POST['login']);
                $password = trim($_POST['password']);
                
                
                if(!isset($_POST['login']) || !$_POST['login'])
                    throw new Exception('Identifiant manquant, merci de compléter votre saisie pour continuer');
                
                if(!isset($_POST['password']) || !$_POST['password'])
                    throw new Exception('Mot de passe manquant, merci de compléter votre saisie pour continuer');
                
                $auth = new AuthAdapter($login, $password);
                $res = $auth->authenticate($login, $password);
                switch ($res->getCode()) 
                {
                    case Zend_Auth_Result::FAILURE:
                        throw new Exception('Mot de passe incorrect, merci de vérifier votre saisie pour continuer');
                    break;
                    
                    case Zend_Auth_Result::SUCCESS:
                        header("Cache-control: private, no-cache");
                        header("Expires: Mon, 25 Feb 2002 01:00:00 GMT");
                        header("Pragma: no-cache");
                        header("content-type: text/html; charset=iso-8859-1");
                        print "{success:true}";
                        //exit;
                    break;
                    
                    default:
                        throw new Exception('Erreur lors de l\'authentification');
                        print $view->render('scripts/auth/authentification.phtml');
                    break;
                }    
            /** Affiche un message de rappel pour les responsables (avec un lien vers la validation des saisies) chaque
                 lundi précédent la date limite de validation des saisies du mois */

                /** Positionne un calendrier sur la date du jour */
                require_once('Agrica/Date/CalendarPeriodHelper.class.php');
                $ch = new CalendarHelper();

                /** Quel mois traite-t-on ? Si nous sommes en début de mois il s'agit du mois précédent, si nous sommes en
                 fin de mois il s'agit du mois courant. Le battement est d'une semaine, dans tous les cas le test passe par rapport
                 à 15  (15 - 7 = 8       15 + 7 = 22)  Sinon pour des cours de mandarin... */
                if ($ch->getDay() < 15) {
                    $ch->previousMonth();
                }

                /** Sommes nous le lundi qui précède le vendredi de la semaine suivant le dernier jour du mois  ? Ou plus simplement
                 sommes nous le lundi qui précède la date butoir du mois écoulé ? */
                $ch->setDay(1);
                $bornes = $ch->getMonthLimits();
                $ch->setDay($bornes[1][2]);

                /** Avance pour mieux reculer le calendrier tant que l'on est pas vendredi */
                $ch->nextDay();
                while (5 != $ch->getDayOfWeek()) {    // 5 est la position de vendredi dans la semaine
                    $ch->nextDay();
                }

                /** Recule de la difference entre vendredi et lundi (5 -1)  */
                for ($i = 0; $i < 4; $i++) {
                    $ch->previousDay();
                }

                /** Récupère l'identifiant et le profil de l'utilisateur courant */
                $infos = $_SESSION['informations'];
                $PER_ID = $infos->PER_ID;
                $profil = $_SESSION['acl']['role'];

                $vasOnStandBy= false;
                /**   Le profil connecté gère-t-il des sections ?  */
                $seg = new SectionsGestion ();
                
                if ($profil = 'user')
                    $segIdsList = $seg->getSegIdsForDptHead ($PER_ID);

Dernière modification par Nikko (27-02-2009 13:32:28)


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#29 27-02-2009 14:42:23

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

quand tu enleve $this->_helper->layout->disableLayout() de loginAction,  indexAction est correctement affiché avec le header et le footer ?

ce que je ne comprend pas c'est ton

Code:

$view = Zend_Registry::get('view');
et apres 
print $view->render('scripts/auth/authentification.phtml');

ton objet view n'est pas initialisé dans le bootstrap
pourquoi pas directement :
print $this->view->render('scripts/auth/authentification.phtml');

Hors ligne

 

#30 27-02-2009 14:52:43

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

Lorsque j'enlève ce morceau de code, je n'arrive pas à passer ma page d'authentification qui est remplie de JS... j'ai une barre de loading qui tourne en rond sans jamais me rediriger vers la page d'accueil... C'est pour cela que j'ai utilisé le disableLayout().

Pour la partie de code que tu ne comprends pas, c 'est simplement une "erreur de jeunesse"... Je suis nouveau sur PHP et Zend et je reprends un programme que je n'ai pas créé. Donc il est possible que je laisse passer certaines choses comme celle que tu viens de souligner. Je corrige celà de suite...


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#31 27-02-2009 15:39:35

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

Lorsque j'enlève ce morceau de code, je n'arrive pas à passer ma page d'authentification qui est remplie de JS... j'ai une barre de loading qui tourne en rond sans jamais me rediriger vers la page d'accueil... C'est pour cela que j'ai utilisé le disableLayout().

c'est bien cela, ca n'a rien a voir avec $this->_helper->layout->disableLayout(); qui active ou non ton layout
(gestion de la vue), alors que tu un probleme de fonctionnement (controlleur, js).

Essaye en debuggant (xdebug) ou rien qu'avec firefox -> firebug -> firephp et
ça dans ton bootstrap :

Code:

$profiler1 = new Zend_Db_Profiler_Firebug('All DB Queries');
$profiler1->setEnabled(true);
$db1->setProfiler($profiler1);

Hors ligne

 

#32 27-02-2009 16:12:18

Nikko
Membre
Lieu: Rueil (Haut-de-Seine)
Date d'inscription: 19-12-2008
Messages: 95

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

En ajoutant ton code dans mon boostrap et en retirant le disablelayout de mon AuthController, j'ai cette erreur là dans l'onglet script de Firebug :

Failed to load source for sourceFile top-level http://localhost:9009/auth script.tags( X| 1197064 1197065 1197066 )(1 invalid)

Qu'est-ce que ca veut dire mis à part qu'il ne peut charger une source ?


Nikko

Etudiant en école d'ingénieur à l'INSIA

Hors ligne

 

#33 27-02-2009 16:34:48

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Résolu][Zend_View][1.6]Affichage d'une vue

pas de chance c'est une erreur de firebug, essaie le version : ->1.3.3 b4

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages