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 :

Variables redondantes aux vue et aux contrôleurs


Sujet :

MVC PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut Variables redondantes aux vue et aux contrôleurs
    Bonjour à tous,

    Après de nombreuses recherche je n'ai toujours pas trouvé exactement de réponse à mon problème.

    Je vous explique brièvement le fonctionnement de ce que j'aimerais éclaircir avec vous :


    Sur mon site lorsque qu'un utilisateur est connecté une variable session est crée contenant l'id.

    De manière général je crée une variable de vue de type array que j'appel viewer.

    Cette variable viewer contient l'ip de l'utilisateur ainsi que d'autres informations.
    Quand l'utilisateur est connecté cette variable viewer est amélioré (informations de l'utilisateur connecté).

    Première question, est - ce une bonne pratique ?
    Deuxième, ou pourrai-je gérer cette initialisation de variable pour mes vues ?

    Ensuite j'aimerai partager un objet user (correspondant à un modèle) qui serais instancié grâce à l'id en session et partager ce modèle user à tous les controlleurs.


    Actuellement je fais comme ça :
    J'ai étendu tous les controlleurs pour que la même méthode init() soit appelé.
    Cette méthode init() crée un variable connected_user ainsi qu'une variable de vue viewer.

    Voici le code :
    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
    abstract class My_Controller_Action extends Zend_Controller_Action
    {
        protected $_connectedUser;
        protected $_nameSpace;
     
        protected $_dbTableTag;
        protected $_dbTableTypeTag;
        protected $_dbTableImg;
        protected $_dbTableUser;
        protected $_dbTableComment;
     
        public function init()
        {
            $this->_dbTableImg = new Application_Model_DbTable_Img();
            $this->_dbTableUser = new Application_Model_DbTable_User();
            $this->_dbTableTag = new Application_Model_DbTable_Tag();
            $this->_dbTableTypeTag = new Application_Model_DbTable_TypeTag();
            $this->_dbTableComment = new Application_Model_DbTable_Comment();
     
            /**
             * Creation d'un objet connectedUser si l'utilisateur est connecté
             * Envoi à la vue d'un tableau representant l'utilisateur regardant (viewer)
             */
            $this->_nameSpace = new Zend_Session_Namespace('xBoard');
            if(isset($this->_nameSpace->user)){
                try{
                    $this->_connectedUser = $this->_dbTableUser->findUserById($this->_nameSpace->user);
                    if(is_null($this->_connectedUser)){
                        throw new Exception("Utilisateur introuvable");
                    }
                    // Récupération d'un viewer
                    $this->view->viewer = array(); // Pou rle modifier plus tard
                    $this->view->viewer = array(
                        'id' => $this->_connectedUser->getId(),
                        'preferences' => array(
                            'showPersonalData' => (bool)$this->_connectedUser->getPreferences('showPersonalData')
                        ),
                        'access' => array(
                            'name' => $this->_connectedUser->getAccess()->getName(),
                            'tag_remove' => $this->_connectedUser->getAccess()->tagRemove(),
                            'typeTag_remove' => $this->_connectedUser->getAccess()->typeTagRemove(),
                            'typeTag_edit' => $this->_connectedUser->getAccess()->typeTagEdit(),
                            'tag_edit' => $this->_connectedUser->getAccess()->tagEdit(),
                            'user_edit' => $this->_connectedUser->getAccess()->userEdit(),
                            'user_remove' => $this->_connectedUser->getAccess()->userRemove()
                        ),
                    );
                }
                catch(Exception $e){
                    unset($this->_nameSpace->user);
                    $this->_nameSpace->error = $e->getMessage();
                    $this->_helper->redirector('index', 'img');
                }
            }
     
    etc...
    Est-ce une bonne pratique que tout cela ? Quel est le meilleur endroit pour le mettre ?
    Entre bootstrap, plugin helpers je suis perdu..

    Actuellement ça marche mais je sais pas si c'est conceptuellement correct et surtout j'utilise la pile d'action pour gérer ma sidebar header, footer etc ce qui fait que pour une page j'ai parfois cette méthode init appelé plusieurs fois car les action correspondante sont appelé.
    Une pour le content une pour la sidebar, une pour le header etc.
    Bonne soirée, Maxime.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Je dirais que tu doit utilisé un aide de vue "helpers" coome ça ton traitement ne sera fais que dans un seul endroit

  3. #3
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    je trouve qu'il y a beaucoup (trop) de choses dans ton init()... Pour l'identité et l'authentification de l'utilisateur, utilise plutôt Zend_Auth que tu places dans le registre ; ainsi, il sera accessible à tous les contrôleurs (et mêmes les vues le cas échéant).
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut
    Merci pour vos réponses

    Je vais me pencher sur Zend_Auth.

    Comme j'apprend zf sur ce site j'ajoute au fur et à mesure les nouvelles notions et j'ai pas encore pris le temps d'apprendre à me servir de Zend_Auth.

    L'utilisation de la pile d'action grâce à l'helper est une bonne pratique ?

Discussions similaires

  1. Modification du chemin d'accès aux vues
    Par yamatoshi dans le forum MVC
    Réponses: 6
    Dernier message: 21/05/2010, 12h13
  2. Réponses: 1
    Dernier message: 17/06/2009, 08h45
  3. Accès aux vues à partir d'un plugin
    Par Jonathan.b dans le forum MVC
    Réponses: 6
    Dernier message: 15/08/2008, 14h37
  4. Accéder aux variables de la vue depuis Zend_Layout
    Par vg33 dans le forum Zend Framework
    Réponses: 2
    Dernier message: 29/06/2008, 23h52
  5. Droit d'accès aux vues ?!
    Par tibi666 dans le forum Requêtes
    Réponses: 5
    Dernier message: 30/04/2007, 13h11

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