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 :

Définir une variable et la rendre accessible dans toutes les vues [ZF 1.9]


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut Définir une variable et la rendre accessible dans toutes les vues
    Bonjour,

    J'ai déclaré un tableau à portée globale qui contient le wording de mon site en plusieurs langues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $wording = array(
    	'header_title' => array(
    		'en-uk'	=> 'Header title',
    		'fr-fr'	=> 'Titre du header'
    	),
    	...
    );
    Chacune de mes vues a besoin d'accéder à cette variable.

    Pouvez-vous me dire s'il faut déclarer $wording en tant que variable globale ou utiliser un système d'assignation différent ($wording se trouve pour l'instant dans ma vue layout...) ?
    Merci d'avance !

  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
    pour utiliser les traductions tu peux par exemple faire une classe qui génère un singleton pour gérer ces données

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    En fait, je souhaiterais connaître la best practice permettant d'utiliser une variable — en l'occurrence de type array — de manière globale (mais pas forcément définie en tant que globale) dans toutes les vues sous-jacentes. Cette variable est pour l'instant définie au niveau du layout (layout.phtml) par pure commodité.

    1. De quelle manière "ZF compliant" définiriez-vous cette variable et à quel endroit ?
    2. Comment accéder par la suite à cette variable au sein de chaque vue ?

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Bonjour,

    Je pense que le plus simple est d'utiliser Zend_Registry, même si utiliser une classe statique pourrait en faire bondir plus d'un.

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Merci pour ta réponse s.n.a.f.u mais cette solution oblige à faire un appel get au registre dans chacune des vues, non ?

    N'existe-t'il pas une manière plus élégante sachant que je souhaiterais accéder à ma variable via $this depuis le layout ou n'importe quelle vue ? Par exemple, :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <title><?php echo $this->wording['header_title']['fr-fr'] ?></title>
    Quant à la déclaration, dois-je la positionner dans le bootstrap, le fichier index.php ou conseillez-vous un autre endroit plus indiqué ?

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Tu peux aussi alimenter une variable de vue au moment de l'initialisation de la ressource, dans le Bootstrap par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    protected function _initView() {
        $view = new Zend_View();
        $view->variable = $machin;
        return $view;
    }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/10/2012, 19h31
  2. Réponses: 14
    Dernier message: 10/07/2008, 11h56
  3. [WIN2003]définir une variable d'environnement dans un batch
    Par creezeer dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 28/08/2007, 11h25
  4. rendre accessible une variable dans toutes les classes
    Par sony351 dans le forum C++Builder
    Réponses: 5
    Dernier message: 24/03/2007, 01h15
  5. [PHP-JS] Définir une variable dans le htaccess
    Par Ikaly dans le forum Langage
    Réponses: 2
    Dernier message: 09/03/2007, 18h09

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