Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 29-07-2008 15:53:36

fizbak
Nouveau membre
Date d'inscription: 29-07-2008
Messages: 5

Structure d'un site web avec multi sous-répertoires

Bonjour,

J'essaie de concevoir avec Zend en MVC un site web dans la structure est la suivante :

Code:

[RACINE]
     fr
          répertoire 1
               sousrepertoire1.1
               sousrepertoire1.n
          répertoire 2
          etc
     en
          répertoire 1
               sousrepertoire1.1
               sousrepertoire1.n
          répertoire 2
     es
          répertoire 1
               sousrepertoire1.1
               sousrepertoire1.n
          répertoire 2
          etc

Les pages sont accessibles de cette manière : http://monsite.fr/[fr|en|es]/repertoire1/sousrepertoire1.1/index.php pour l'index par exemple ou http://monsite.fr/[fr|en|es]/repertoire1/sousrepertoire1.1/page.php pour une page quelconque de sousrepertoire1.1

Typiquement, toutes mes pages sont de la forme :

Code:

include("header");
contenu
include("footer")

J'aimerais savoir comment je pourrais structure cela en MVC ?
Si je veux atteindre la page http://monsite.fr/[fr|en|es]/repertoire1/sousrepertoire1.1/page.php, dans ce cas, comment sera structure mon controller pour atteindre cette page, si le controller est "repertoire1" ? Comment gérer dans un controller l'accès au sous-repertoire ?
Merci pour vos lumières.

Hors ligne

 

#2 29-07-2008 16:05:26

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Structure d'un site web avec multi sous-répertoires

Bonjour,

Je comprends pas trop ton histoire de répertoire, à mon avis tu cherches à concevoir un site multi-lingue et ce n'est pas du tout comme cela que cela fonctionne.

Zend propose un outil de traduction (Zend_Translate) qui va permettre d'externaliser tous tes libellés dans un fichier (array, gettext ... bref voir la doc)

Le /fr que tu mets en fin d'url est uniquement un paramètre que tu passes pour dire "charge la langue fr", si des contenus sont en base de données, il te faudra un systeme pour avoir ce contenu dans plusieurs langues et charger le bon en fonction de la langue passée en paramètre.

Bref en tout cas, la gestion d'un site multilangue ne passe pas par la refonte totale de ton projet, il suffit d'utiliser l'outil de traduction de zend et de l'adapter pour charger la langue voulue.

Si tu ne parlais pas de ça, méa culpa, alors j'ai rien compris wink

PS: concernant ton code

Code:

include("header");
contenu
include("footer")

Tu peux regarder du coté de Zend_layout

Hors ligne

 

#3 29-07-2008 17:14:49

fizbak
Nouveau membre
Date d'inscription: 29-07-2008
Messages: 5

Re: Structure d'un site web avec multi sous-répertoires

Pour l'histoire des répertoires, un exemple vaut mieux non!

Voici une petite liste des liens actuels sur le site que je voudrais refaire :

Code:

http://www.monsite.fr/fr/repertoire/index.php
http://www.monsite.fr/fr/repertoire/hier.php
http://www.monsite.fr/fr/repertoire/demain.php
http://www.monsite.fr/fr/repertoire/sousrepertoire1/index.php
http://www.monsite.fr/fr/repertoire/sousrepertoire1/truc.php
http://www.monsite.fr/fr/repertoire/sousrepertoire1/toto.php
http://www.monsite.fr/fr/repertoire/sousrepertoire1/soussousrepertoire1/tata.php

Tous les liens de l'une des formes ci-dessus sont actuellement valides.
Toutes les pages *.php existent, ainsi que les dossiers et sous-dossiers, et ceci en plusieurs langue [fr, en, etc.].
Chaque page est typée comme je l'ai mentionné dans mon post précédent, de la façon suivante :

Code:

include("header")
contenu
include("footer")

Par exemple, pour l'url

Code:

http://www.monsite.fr/fr/repertoire/sousrepertoire1/soussousrepertoire1/tata.php

le fichier tata.php ressemble à ceci :

Code:

include(BASE_URL, "header")
<div id="contenu">
blablabl
</div>
include(BASE_URL, "footer")

Ce fichier (tata.php) est duppliqué autant de fois qu'il n'y a de langue. Le contenu du header et du footer s'affichera automatiquement en fonction de la langue (passée dans l'url ou détectée dans le navigateur). Ce contenu est stocké dans un fichier propre à la langue. Là aussi, ce n'est pas fameux car ce fichier est dans /[fr|en|it|es|etc]/communs/langue.php.
Le corps de la page (entre <div='contenu">...</div>) est static (écrit en dur dans le fichier tata.php pour ce cas).
Voilà ce que j'ai actuellement. Ca devient lourd à maintenir, surtout que les header et footer ont été codés à la rache en mélangeant le code php et html dans tous les sens.
J'ai décidé de tout refondre et de repenser l'ensemble.

Voici un autre exemple pour mieux illustrer la situation.
Il m'a fallu rajouter le "repertoire X" dans toutes les langues, parce que Monsieur "IL" avait créé ce répertoire lié à ses activités. Et il n'est pas le seul.
J'ai donc rajouté /[fr|en|it|etc]/repertoireX/* dans toute l'arborescence du site.

Comme je voudrais utiliser Zend d'une part et MVC d'autre part, l'idée est de tout refaire (sans casser le bloc <div id="contenu">...</div>) et revoir la structure des URL.
Or là, je n'ai aucune idée.

Ma question est de savoir comment je m'y prends pour passer d'une structure de ce type là (voir post précédent) à une structure type MVC avec Zend ?
Et comment faire interpréter un lien du http://www.monsite.fr/fr/repertoire/sou … 1/tata.php au controller (au bon controller, qu'il faudra placer où ???) ?

Hors ligne

 

#4 29-07-2008 20:51:06

fizbak
Nouveau membre
Date d'inscription: 29-07-2008
Messages: 5

Re: Structure d'un site web avec multi sous-répertoires

J'ai pensé à une arborescence suivante :

Code:

/application
     /models
     /modules
          /module 1
               /sousmodule 1.1
                    /controllers
                    /models
                    /views
               /sousmodule 1.2
                    /controllers
                    /models
                    /views
          /module 2
               /sousmodule 2.1
                    /controllers
                    /models
                    /views
               /sousmodule 2.2
                    /controllers
                    /models
                    /views
          /module n
/public
     /images
     /scripts
     /styles
/library
     /Zend
     /Mes_classes
/tmp
     /sessions
     /cache
index.php

Sauf que :
- où dois-je mettre le contenu <div='contenu">...</div> static de chaque page de mon site sachant que j'ai autant de page contenu que de langue, et que dans un répertoire, je peux avoir un ou plusieurs fichiers ? Dans les vues ? Je ne pense pas! Je bloque là-dessus...
- et comment, en fonction de la langue, afficher le contenu de la page, sachant que ce contenu (des dizaines voire centaines de lignes) n'est pas dans une base mais dans un fichier (qui lui même est en faite la page à afficher) ?

Dernière modification par fizbak (29-07-2008 21:12:10)

Hors ligne

 

#5 30-07-2008 09:33:04

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Structure d'un site web avec multi sous-répertoires

Pourquoi des sous-modules ?
Tu n'as pas assez du découpage module/controller/action ?? 3 niveau c'est déjà bien, pourquoi 4 ?

Tu devrais lire la documentation du Zend Framework car je te te sens "à coté".
Notamment la partie Layout, Translate, Controller (et les routes)

De plus, il y a pleins d'astuce sur le forum pour gérer les routes avec le langage.

Bon courage


----
Gruiiik !

Hors ligne

 

#6 30-07-2008 10:48:06

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Structure d'un site web avec multi sous-répertoires

Exactement ! zend_route, zend_translate, zend_layout, Zend_controller, regarde tout ça dans la doc et tu verras que tes idées seront beaucoup plus claires.

En tout cas avant de t'embarquer directement sur ton projet, il va falloir passer par une phase d'apprentissage (lecture de doc, tutos ... ) tu vas pas assimiler ce framework au complet en 1 semaine.

en tout cas on t'as déja orienté sur les composants qui vont servir à ce que tu demandes.

Hors ligne

 

#7 30-07-2008 10:49:11

fizbak
Nouveau membre
Date d'inscription: 29-07-2008
Messages: 5

Re: Structure d'un site web avec multi sous-répertoires

En fait, je crois qu'il y a un truc que je ne comprends pas.
J'ai regardé quelques exemples de site et je me suis aperçu de ceci :
1. ce sont des sites qui fonctionnent en modules (blog, news, admin, etc) dont les données sont très souvent stockés dans une base
2. la profondeur des répertoires est en général inférieur à 2. (exemple : http://www.monsite.fr/profondeur1/profondeur2).

Petite question, dont la réponse pourrait me mettre sur la piste.
Prenons un site complètement static avec toujours la même entête et le même pied de page, mais juste le corps qui change.
Prenons deux pages distinctes. La première étant l'index (index.php) et la deuxième étant une description d'un vase du 20e siècle (description.php). Ces deux pages ont une version en "fr" et une version en "en". J'ai donc 4 pages pour ce site.
La racine du site est donc :

Code:

- htdocs
     - fr/XXXXXXX
     - en/XXXXXXX
     - admin/ (zone d'administration)

Parce que j'en aurais besoin, prennons une zone d'administration, à la racine du site.
Ces pages sont accessibles physiquement (sans redirection) de cette manière :

Code:

http://monsite.fr/[fr|en]/documentation/art/vase/index.php
http://monsite.fr/[fr|en]/documentation/art/vase/description.php
http://monsite.fr/admin/ (accès réservé)

Le contenu de chaque page est écrit en dur

Code:

<div id="contenu">Le vase du 18e siècle....</div>

pour la partie "fr" et idem pour la partie "en".
1. Si vous deviez refaire un site avec une telle arborescence en utilisant Zend, sachant que les rubriques (ici "documentation" dans l'url) varient entre 1 et n, idem pour les sous-rubriques (ici "art"), pour les sous-sous-rubriques (ici "vase"), etc., quelle structure adopteriez-vous ?
2. De quelle manière gérèreriez-vous la langue sachant le contenu représente un volume important de texte déjà traduit dans les versions disponibles pour le site ?
Je continue la lecture de la doc en attendant des pistes.
Merci pour vos lumières.

Hors ligne

 

#8 30-07-2008 11:24:06

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Structure d'un site web avec multi sous-répertoires

Heu, je pense que si j'avais à refaire un site avec une telle arborescence, je me tirerais les cheveux.
ZF intègre très bien l'aspect multilingue d'un site avec zend_translate.
En gros, tu n'as qu'une seule page pour toute les langues. Toutes les traductions de ta description sont dans un fichier. le fr/en dans ton adresse est en faite un paramètre (voir du coté router).
Et selon la valeur du paramètre de ton url, zend_translate affiche la description dans une langue ou une autre.

Liens:
http://www.z-f.fr/forum/viewtopic.php?id=648
http://www.kitpages.fr/zf_zendTranslate.php

Dernière modification par slaughter (30-07-2008 11:37:50)

Hors ligne

 

#9 30-07-2008 11:36:59

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Structure d'un site web avec multi sous-répertoires

C'est exactement ce que je lui ai dit dans mon premier post hmm

Gerer les langues en écrivant en dur le contenu dans des fichiers séparés c'est de la connerie.

Normalement tu fais ton site normalement en français, en utilisant zend_translate pour externaliser tes libellés, ensuite ton fichier de traduction fr , tu le traduis dans toutes les langues que tu veux et tu charges le bon fichier en fonction du parametre de langue passé en url.
Pour ce qui est du contenu, il faudra le sauvegarder en base dans des tables différentes que tu peux préfixer par ton parametre de langue :

fr_table1
fr_table2
en_table_1
...
C'est comme ça que je ferais.

Sinon concernant l'url http://www.monsite.fr/profondeur1/profondeur2, il n'y a pas de notion de profondeur, c'est monsite/controller/monaction

Pour ton vase ça serait en gros :
http://monsite.fr//documentation/voirDe … on/vase/fr
Donc tu chargerais ton controller "documentation" en appellant "voirDescription" en lui passant le paramètres "vase" et "fr"
Tu passes à une architecture mvc et le raisonnement est différent ! Ta notion de profondeur de dossier dans l'url est fausse !

Bref lis la doc avant de poser ces questions e ttu comprendras car tes questins n'ont aucun sens! Tu cherches à utiliser un modele MVc en ayant une réflexion qui n'a rien à voir avec un modèle MVC!

Dernière modification par sebondus (30-07-2008 11:38:47)

Hors ligne

 

#10 30-07-2008 11:56:38

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Structure d'un site web avec multi sous-répertoires

Oui. J'ai donné un exemple de site multilingue sans BDD (ce qui est rare).

Sinon pour une utilisation en bdd je ne pense pas qu'il faille avoir plusieurs tables.
Voilà comment je le vois :
- Une table des langues
    - nom de la table : language
    - champs de la table :  language_id | language_name | language_param
    - exemple de valeur :         1                   Francais                fr
                                            2                   English                  en

- La table description
    - nom de la table : description
    - champs de la table :  description_id |            description_content            | decription_language_id
    - exemple de valeur :          1               "decription du vase en francais"                  1
                                              1               "decription du vase en anglais"                    2
                                             2               "decription d'un tableau en francais"              1
                                             2               "decription d'un tableau en anglais"                2

Je te conseilles également de voir les tutos de liens que je t'ai donné.

Hors ligne

 

#11 30-07-2008 12:11:23

phpman
Membre
Date d'inscription: 20-03-2008
Messages: 138

Re: Structure d'un site web avec multi sous-répertoires

J'ai pensé à plusieurs table, en donnant un exemple simple big_smile, j'ai jamais fait de site avec du contenu multilingue, c'est vrai que ton modèle est beaucoup mieux conçu wink

Hors ligne

 

#12 30-07-2008 12:19:08

fizbak
Nouveau membre
Date d'inscription: 29-07-2008
Messages: 5

Re: Structure d'un site web avec multi sous-répertoires

slaughter a écrit:

Heu, je pense que si j'avais à refaire un site avec une telle arborescence, je me tirerais les cheveux.

Je n'ai plus qu'à commencer à les compter et vous donner le résultat sad

slaughter a écrit:

ZF intègre très bien l'aspect multilingue d'un site avec zend_translate.
En gros, tu n'as qu'une seule page pour toute les langues. Toutes les traductions de ta description sont dans un fichier.

OK! Je vois à peu près.
J'ai plus de 100 pages distinctes traduites en 4 langues. Est-ce que cela veut dire que je peux avoir une arborescence de ce genre :

Code:

/application
/languages
     /fr
          page_1.mo
          page_2.mo
          ...
          page_n.mo
     /en
          page_1.mo
          page_2.mo
          ...
          page_n.mo
     /it
          page_1.mo
          page_2.mo
          ...
          page_n.mo
     /es
          page_1.mo
          page_2.mo
          ...
          page_n.mo
/library

sebondus a écrit:

Normalement tu fais ton site normalement en français, en utilisant zend_translate pour externaliser tes libellés, ensuite ton fichier de traduction fr , tu le traduis dans toutes les langues que tu veux et tu charges le bon fichier en fonction du parametre de langue passé en url.
Pour ce qui est du contenu, il faudra le sauvegarder en base dans des tables différentes que tu peux préfixer par ton parametre de langue :

fr_table1
fr_table2
en_table_1
...
C'est comme ça que je ferais.

OK! Mais en fait, moi j'ai des contenus très important en volume, penses-tu que solliciter la base de données serait plus intéressant que d'afficher tout simplement le contenu d'un fichier ?
Sachant que ce contenu, ce n'est pas moi qui le fournis, mais d'autres personnes qui ont la possibilité d'écrire dans certaines zones du serveur qui leur est réservées.

sebondus a écrit:

Sinon concernant l'url http://www.monsite.fr/profondeur1/profondeur2, il n'y a pas de notion de profondeur, c'est monsite/controller/monaction
Pour ton vase ça serait en gros :
http://monsite.fr/documentation/voirDescription/vase/fr

Ok, je comprends un petit peu le coup des controller/monaction.
Mais ça veut dire que je dois réécrire tous les liens de la forme http://www.monsite/fr/documentation/art … iption.php en http://monsite.fr/controller/action/param/valeur ?

sebondus a écrit:

Donc tu chargerais ton controller "documentation" en appellant "voirDescription" en lui passant le paramètres "vase" et "fr"
Tu passes à une architecture mvc et le raisonnement est différent ! Ta notion de profondeur de dossier dans l'url est fausse !

C'était pour expliquer avec mes mots...

sebondus a écrit:

Bref lis la doc avant de poser ces questions e ttu comprendras car tes questins n'ont aucun sens! Tu cherches à utiliser un modele MVc en ayant une réflexion qui n'a rien à voir avec un modèle MVC!

La doc n'est pas toujours clair et les exemples concrets manquent.
A peine on essaie de comprendre une notion qu'on passe à une autre sans exemple concret.
Heureusement que les forums existent pour avoir des explications et exemples plus clairs.

Hors ligne

 

#13 30-07-2008 13:47:54

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Structure d'un site web avec multi sous-répertoires

Moi aussi, je trouve qu'il manque beaucoup d'exemple concret. Le Framework et relativement jeune mais je pense surtout que c'est la communauté ZF qui est jeune. Je trouve qu'il y a plus d'utilisateur ZF débutants que confirmés (merci aux confirmés qui sont tout de même très actifs sur ce forum). Le mieux qui nous reste c'est donc :
1) lire la doc
2) lire les tutos
3) aller sur le forum

Je pense que pas mal de question que tu poses actuellement trouverons leurs réponses dans les tutos que je t'ai donné en lien (je pense par exemple au nombre de fichiers .mo)

Ensuite si on hésite sur la logique d'une application, je trouve que le plus pratique est d'en parler sur le forum et nous t'avons plus ou moins répondu
-design pattern MVC et controller/action
-stockage des données
    - traduction des libellées par Zend_translate
    - traduction de la documentation en BDD. (Si les documentations sont mises à jour régulièrement, tu serais obligé de créer une interface d'administration pour ta BDD accessible à tes utilisateurs.)

Dernière modification par slaughter (30-07-2008 13:48:39)

Hors ligne

 

#14 30-07-2008 14:23:40

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Structure d'un site web avec multi sous-répertoires

Et arrête de parlé de profondeur et de fichiers.
Ce sont des notions qui ont tendances à disparaître de nos jour.

Dit toi plutôt "qui fait quoi ."

Attention pour la traduction, il est écrit nulle part que la BDD est le meilleur moyen pour la traduction. Il faut choisir son moyen en fonction de son utilisation. (la encore la doc de Zend te donne des infos)


----
Gruiiik !

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