Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-09-2010 15:47:11

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

[Résolu] [Resource Plugins] À quoi cela sert-il?

Cette question est résolue sur le lien ci-dessous :

http://www.z-f.fr/forum/viewtopic.php?id=5798

Il est possible d'utiliser un greffon de ressource pour amorcer certaines ressources.

-----------


Bonjour à tous,

Je désire développer un site dont la présentation s'adapte au terminal utilisé par le visiteur. Typiquement :

(*) L'organisation (et la typographie) d'une page à destination d'un utilisateur d'Iphone est soumise à des contraintes imposées par la taille de l'écran de l'Iphone.

(*) L'utilisation de certaines technologies n'est pas envisageable sur un Iphone (Flash,...).

Je me pose la question suivante : Quelle est la solution la plus élégante, par rapport à l'implémentation du patron de conception MVC de ZEND.

J'ai consulté la documentation, et je suis tombé sur un concept qui me semble utile dans le cas de figure qui m'intéresse : "Resource Plugins" (http://framework.zend.com/manual/fr/zen … ation.html).

Mais j'ai beau lire, et relire (et relire encore et encore), la documentation, je ne vois pas à quoi ça sert.

Quelqu'un peut-il me donner un exemple représentatif d'utilisation de ce concept?

Merci,

Denis

Dernière modification par Denis. Beurive (04-10-2010 18:39:52)

Hors ligne

 

#2 30-09-2010 15:59:56

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu] [Resource Plugins] À quoi cela sert-il?

Bonjour,

Les Resource Plugins n'ont a priori rien à voir avec ton besoin. Ils servent juste à faciliter l'initialisation de ton application (le Bootstrap).

Sinon tu as de nombreuses façons de faire qui dépendent du résultat que tu veux à l'arrivée. Ca n'est pas vraiment lié au ZF.

Tu peux regarder le "Context Switch" http://framework.zend.com/manual/en/zen … lpers.html qui peut t'aider à gérer ce genre de problématique, mais avant de te lancer dans le code, demande toi ce que tu veux dans ta version "standard" et dans ta version iphone.

Parfois avoir juste un changement de CSS suivant le terminal peut suffire...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 30-09-2010 17:02:53

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

Re: [Résolu] [Resource Plugins] À quoi cela sert-il?

philippe a écrit:

Bonjour,

Les Resource Plugins n'ont a priori rien à voir avec ton besoin. Ils servent juste à faciliter l'initialisation de ton application (le Bootstrap).

Sinon tu as de nombreuses façons de faire qui dépendent du résultat que tu veux à l'arrivée. Ca n'est pas vraiment lié au ZF.

Tu peux regarder le "Context Switch" http://framework.zend.com/manual/en/zen … lpers.html qui peut t'aider à gérer ce genre de problématique, mais avant de te lancer dans le code, demande toi ce que tu veux dans ta version "standard" et dans ta version iphone.

Parfois avoir juste un changement de CSS suivant le terminal peut suffire...

A+, Philippe

Salut Philippe,

Je te remercie pour ta réponse.

Au niveau de l'agencement ("layout") des pages :

Il me faut un "fichier d'agencement" (un fichier de "layout") par type de terminal.

Sur écran de PC, le site présentera une marge à gauche. Cette marque contiendra des liens vers des services. Sur un Iphone, je ne vais pas afficher la marge de gauche. Il me faut donc prévoit un agencement spécifique pour chaque terminal.

Au niveau des vues :

Je dois définir des vues communes à tous les terminaux, mais aussi des vues spécifiques pour chaque terminal.

Le menu principal de navigation n'utilise pas les mêmes technologies suivant que le site est destiné à l'Iphone ou à un PC. Non seulement les technologies diffèrent, mais l'organisation du menu diffère aussi. Il me faut donc définir une vue spécifique à chaque terminal.

Par contre, le pied de page sera identique, quel que soit le terminal. Il me faut donc définir un jeu de pages communes.

Au niveau des aides de vues :

La problématique est identique à celle des vues.

Au niveau des CSS :

La problématique est identique à celle des vues.



J'ai pensé à jouer avec l'environnement du fichier d'initialisation.

application/configs/application.ini

Code:

[defaultTerminal : production]

resources.layout.layoutPath = APPLICATION_PATH "/layouts/default"
ressouces.view...                = APPLICATION_PATH "/views/default"
ressouces.view...                = APPLICATION_PATH "/helpers/default"

[iphoneTerminal : production]

resources.layout.layoutPath = APPLICATION_PATH "/layouts/iphone"
ressouces.view...                = APPLICATION_PATH "/views/iphone"
ressouces.view...                = APPLICATION_PATH "/helpers/iphone"

Dans le fichier "index.php", je défini APPLICATION_ENV comme un tableau de chaînes de caractères (http://zendframework.com/manual/1.0/fr/ … s.ini.html).

Ex :

Code:

define('APPLICATION_ENV', array('production', 'iphoneTerminal'));

Code:

$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);

Le problème, c'est que cette technique ne permet pas de gérer les "éléments" par défaut (vues communes à tous les terminaux, ...). Pour les aides de vues, toutefois, je crois qu'il est possible de définir un répertoire par défaut (il faut que je relise la documentation).

Que penses-tu de cette solution?

A+

Dernière modification par Denis. Beurive (30-09-2010 17:03:31)

Hors ligne

 

#4 30-09-2010 23:54:55

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

Re: [Résolu] [Resource Plugins] À quoi cela sert-il?

Gestion des "layouts"

Je place dans le même répertoire tous les "layouts" (le "layout" pour l'Iphone, le "layout" pour l'Ipade, le "lauyou" pour un PC,...).

Puis j'utilise la fonction "setLayout()" pour spécifier celui qui doit être utilisé, en fonction du terminal courant.

Gestion des vues

J'ai trouvé un moyen de configurer l'application de façon à obtenir le comportement suivant :

1. Je définis deux répertoires : Un répertoire qui contient les vues spécifiques à un terminal (ex: toutes les vues spécifiques à l'Iphone). et un répertoire qui contient les vues communes à tous les terminaux.

2. L'application commence par rechercher la vue associée à l'action dans le répertoire spécifique au terminal courant.

3. Si le répertoire spécifique au terminal courant contient la vue recherchée, alors cette dernière est utilisée.

4. Dans le cas contraire, l'application recherche la vue dans le répertoire qui contient les vues communes à tous les terminaux.

Pour cela, il faut utiliser les fonctions suivantes :

http://julien-pauli.developpez.com/tuto … =Zend_View

setScriptPath() indique à notre instance de vue, où chercher les fichiers vue qu'on va lui faire charger.

addScriptPath() ajoute un dossier dans la liste des dossiers de vue. Notre instance va chercher dans le dossier spécifié par addScriptPath() d'abord puis, si elle ne trouve pas les vues, elle cherchera alors dans le dossier spécifié par setScriptPath(). C'est intéressant si l'on veut créer plusieurs looks sur notre site et spécifier un des looks via cette méthode.

Code:

setScriptPath(<chemin vers le répertoire des vues communes à tous les terminaux>)
addScriptPath(<chemin vers le répertoire des vues spécifiques au terminal courant>)

Gestion des aides de vues

J'ai trouvé un moyen de configurer l'application de façon à obtenir le comportement suivant :

1. Je définis deux répertoires : Un répertoire qui contient les aides de vues spécifiques à un terminal (ex: toutes les aides de vues spécifiques à l'Iphone). et un répertoire qui contient les aides de vues communes à tous les terminaux.

2. L'application commence par rechercher l'aide de vue associée à l'action dans le répertoire spécifique au terminal courant.

3. Si le répertoire spécifique au terminal courant contient l'aide de vue recherchée, alors cette dernière est utilisée.

4. Dans le cas contraire, l'application recherche l'aide de vue dans le répertoire qui contient les aides de vues communes à tous les terminaux.

Code:

setHelperPath(<chemin vers le répertoire des aides de vues communes à tous les terminaux>)
addHelperPath(<chemin vers le répertoire des aides de vues spécifiques au terminal courant>)

Note: Au lieu de réaliser ces opérations via le code PHP, il est peut-être possible de définir des environnements dans le fichier d'initialisation de l'application ("application.ini"). Ce serait plus élégant. Mais je ne suis pas certain que cela soit réalisable.

A+

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