Bonjour,

Je viens d'arriver sur le forum, car je me suis mis au développement en POO+MVC et j'ai encore pas mal de lacunes, même si j'ai compris le concept global.

J'ai une interrogation concernant le choix de structuration de mes controleurs et méthodes le tout lié à mes URL définitive, car peut être que je pense mal la chose et je voudrais être éclairé sur ce point. Je prends un peu en longueur pour expliquer ma demande, mais je préfère ça pour que ce soit au maximum compréhensible à vous qui prendrez le temps de me répondre :)

Je m'explique un peu mieux :
Dans l'idée, j'ai une structure de site à 4 niveaux au maximum :

Au niveau 1, j'ai mon accueil de site
Au niveau 2, j'ai mes différentes rubriques principales dont la rubrique "réalisations"
Au niveau 3, j'ai les différentes rubriques de la rubrique "réalisations"
Au niveau 4, j'ai les différentes réalisations.

Au niveau des urls rewritée finales, j'aimerais avoir quelque chose du genre :

/
/realisations
/realisations/categorieDeRealisations
/realisations/categorieDeRealisations/id/nomDeLaRealisation

Dans mon idée , j'aurais :

  • un controleur "Site" destiné à l'accueil avec une seule méthode index (du moins pour l'instant)
  • autant de controleurs que de rubriques (chacune avec son nom unique) avec une méthode "index" pour chacun, y compris la rubrique "Réalisations" (pour gérer mon niveau 2)
  • autant de controleurs que de sous rubriques (chacune avec son nom unique) avec deux méthodes "index" (pour gérer mon niveau 3) et "details", cette dernière pour faire appel à mon niveau 4

Et là je me dis, avec une réécriture dans mon .htaccess comme ceci :

RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/([0-9]+)/([a-zA-Z0-9-]+)$ Web/app.php?module=$1&action=$2&id=$3

je récupérerais directement le bon nom de controleur et le bon nom d'action dans mon url et j'obtiendrais le résultat escompté.

Mais je crée beaucoup de controleurs pour mes sous rubriques, je me demande si c'est correct dans l'optique MVC.
Il serait envisageable que "index", "categorie" et "details" soient simplement des méthodes du controleur "réalisations", ce qui supprimerait l'utilisation des controleurs de sous rubriques.
Seulement, je me retrouverais avec une url contenant ce controleur "categorie" dont j'aimerais me passer mais qu'il ne sera pas possible de supprimer à la réécriture via .htaccess (à ma maigre connaissance ?), mais seulement via un routeur (j'ai vu le tuto graphikart dessus, c'est juste au dessus de mes compétences pour l'instant).

Quel est votre avis sur la question, l'option évoquée initialement est-elle correcte ou pas selon vous ?

Merci d'avance de vos réponses :)

2 réponses


Bonsoir.
J'ai un peu de mal à comprendre ce que tu cherches à faire, car d'après ce que tu expliques, ce serait un portfolio et d'après les url's, ça donnerait quelque chose du genre :

  • Catégorie 1
    • Sous-catégorie 1
      • Réalisation 1
      • Réalisation 2
      • etc ...
    • Sous-catégorie 2
  • Catégorie 2
    • etc ...

Pour ce qui concerne les controllers, 3 seraient largement suffisant.

  1. Un pour la page d'accueil du site et les différentes autres pages normales, comme par exemple pour un formulaire de contact, une page à propos, etc ...
  2. Un autre pour les catégories et sous-catégories (une méthode pour lister les catégories, une autre pour afficher les sous-catégories d'une catégorie et une autre pour lister les réalisations d'une sous-catégorie)
  3. Un dernier pour afficher une réalisation spécifique

Ce n'est bien sûr qu'un exemple, mais c'est quand même plus logique que ce que tu voulais faire, tout comme tu peux très bien ne pas faire un troisième controller et afficher une réalisation spécifique dans une quatrième méthode dans le second controller.
Pour donner un exemple par rapport à l'url finale pour afficher une réalisation : categorie\/sous-categorie\/id\/realisation.
Dans ce schéma là, je ne vois pas l'intérêt de faire un controller pour chaque catégorie/sous-catégorie/réalisation, tu es censé faire quelque chose de dynamique et non de statique.

Seijine
Auteur

Mmmh, déja merci de ta réponse. :)

J'ai parfois encore un peu de mal à faire le lien entre la structure de mon arborescence et celle de mes classes. Je pense à peu près comprendre ce que tu m'explique et pourrait en effet simplifier.

Si je résume et pour être sur d'avoir bien compris j'aurais donc bien celà ?

  • un controleur "site"
      1. une méthode "index" que je pourrais faire déboucher sur la racine du site
      1. plusieurs autres méthodes "rubriqueX" pour chaque rubriques du site (sauf "réalisations") qui pourraient donc pointer sur /rubriqueX,
  • un controleur "réalisation"
      1. une méthode "index" par défaut
      1. une méthode "categories" pointant vers realisations/categories) (pas persuadé de l'utiliser, car ça fait une page intermédiaire)
      1. une méthode "categorie" pointant vers /realisations/categorie
      1. une méthode "detail" pointant vers /realisations/categorie/id/realisation

En correspondance unwrite/rewrite des urls, on aurait quelque chose du genre :

  • 1 ?controleur=site => /site
  • 2 ?controleur=site&methode=contact => /site/contact
  • 3 ?controleur=realisations => /realisations
  • 4 ?controleur=realisations&methode=categories => /realisations/categories
  • 5 ?controleur=realisations&methode=categorie => /realisations/categorie
  • 6 ?controleur=realisations&methode=categorie&id=1&slug=exemple-de-slug => /realisations/categorie/1/exemple de slug

Seulement si je ne veux pas dans l'exemple 2 "/site/contact", mais "/contact", je ne pourrais pas si je ne m'abuse ?

Merci encore de ta réponse, j'attends réponse pour la suite :)

(Désolé de la mise en forme, markdown c'est pas mon truc...)