Design pattern MVC, URLs et Controleur Frontal

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par noren, 22 Mars 2014.

  1. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Bonjour

    Tout d'abord petite précision, je cherche pour mes projets à mettre en place le modele MVC ou du moins avoir un code propre et bien organisé.
    Je sais très bien qu'il existe des framework de qualité (symphonie, zend, cakephp etc.).
    Ce n’est donc pas le propos ;)

    Après avoir lu et relus plusieurs fois plusieurs tutoriels sur la méthode MVC :

    http://bpesquet.developpez.com/tutoriels/php/evoluer-architecture-mvc/
    http://fr.openclassrooms.com/informatique/cours/adopter-un-style-de-pr ... modele-mvc
    http://www.grafikart.fr/tutoriels/php/mvc-model-vue-controller-php-132
    http://fr.openclassrooms.com/informatique/cours/votre-site-php-presque ... -pratiques

    Je pense avoir compris le principe et le rôle des contrôleurs, modèles, vues, routeur et controleur frontal (généralement index.php)
    Je bloque pour le moment sur ce point : les URL et le controleur frontal (et le routage associé)

    La plupart des tutoriels donnent ce type d’exemple :

    Code:
    nomsite.com/controleur/action/id 
    dans un cas concret :

    Code:
    nomsite.com/blog/billet/3 
    Blog et billet etant statique il est donc aisé de créer le contrôleur blog et l'action billet.
    Alors pour ces exemples ca semble donc facile à comprendre.

    Mais comment utiliser cette architecture si on veut des URL de ce type :

    Code:
    nomsite.com/nomcategorie/nomrubrique  
    Sachant que nomcategorie et nomrubrique est variable, il s'agirait donc de paramètres dynamiques.

    Exemple si on prend une boutique :

    Code:
    nomsite.com/chaussures/enfants
    
    Comment dans ce cas la déterminer un contrôleur et une action ? Doit-on obligatoirement avoir une Url a rallonge de ce type :

    Code:
    nomsite.com/categorie-rubrique/liste/chassures/enfants
    Controleur=categorie-rubrique
    Action = liste
    arg1=chaussures
    arg2=enfants

    ou autre possibilité :

    Code:
    nomsite.com/cat-chassures/rub-enfants/liste
    Idem si pour les articles je veux ce type d'URL :

    Code:
    nomsite.com/titrearticle-id
    Difficile également d'identifier un contrôleur et une action. Est-on obligé d'avoir :

    Code:
    nomsite.com/articles/billet/titre-article-id
    exemple avec une URL de WRI :

    https://www.webrankinfo.com/dossiers/techniques/seo-produits-supprimes

    ici on peut très bien imaginer le contrôleur "dossiers". mais pour l'action? "technique"s semble être une rubrique dynamique, il est donc difficile de créer une action "techniques"

    Et lorsqu'on part sur du MVC 2 avec controleur frontal doit-on forcement avoir pour son url rewriting de ce type :

    Code:
    # Réécrit une URL de type xxx/yyy/zzz en index.php?controleur=xxx&action=yyy&id=zzz
    RewriteEngine on
    RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controleur=$1&action=$2&id=$3 [NC,L]
    Comment gérer si on peu avoir un nombre d'arguments variable?
    ou si on veut modifier un peu la structure lorsqu'on appelle certains controleurs.

    Exmeple si je reprend l'exmeple suivant :

    Code:
    nomsite.com/categorie-rubrique/liste/chassures/enfants
    Que je soujaite plutôt le mettre sous la forme :
    Code:
    nomsite.com/cat-chassures/rub-enfants/liste
    Dois je créer une règle spécique dans le .httacess pour chaque controleur

    Code:
    # Réécrit une URL de type xxx/yyy/zzz en index.php?controleur=xxx&action=yyy&id=zzz
    RewriteEngine on
    news-([a-zA-Z0-9_-]*)-([0-9]+)\.html$
    RewriteRule ^cat-([a-zA-Z0-9_-]*)/rub-([a-zA-Z0-9_-]*) .....  index.php?controleur=categorie-rubrique&action=$3&categorie=$1&rubrique=$2 [NC,L]
    etc.
    
    Vous sentez que c'est un peu confus dans ma tête ou pas? :mrgreen:

    Pour le moment je serais plutôt tenter de partir sur un modèle MVC simple sans contrôleur frontal, de cette façon j'ai l'impression d'être plus libre dans la gestion des URL, des paramètres etc. Mais ce n’est évidemment pas la solution idéale et la plus facile à maintenir et a faire évoluer.


    Autre point est-ce courant d'avoir plusieurs modèles dans un même contrôleur ? Ou est-ce contraire au modèle MVC ? Faut-il forcément 1 seul modèle pour 1 contrôleur?

    Code:
    ControlleurBillet.php
    
    require_onde ('modele/modele1.php') ;
    require_once ('odele/modele2.php')
    
    object1= news class_model1(param1, param2, param 3) ;
    object2=news class_model2(object1) ;
    
    require_once  (' vue/vueBillet') ;
    J'ai également l'impression que le modèle (design patern) MVC impose enfin de compte un grand nombre d'include (ou require). Ce que je trouve pas forcément très jojo.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 163
    J'aime reçus:
    338
    C'est généralement des routes définies selon un regex:
    CakePHP: http://book.cakephp.org/2.0/en/development/routing.html
    Laravel: http://laravel.com/docs/routing
    Symfony: http://symfony.com/doc/current/book/routing.html
    ...
    Standalone:
    http://upshots.org/php/php-seriously-simple-router
    https://gist.github.com/dave1010/1214164

    Ainsi le front controller/dispatcher peut parser ces URLs.

    Plutôt parser:
    - REQUEST_URI
    - QUERY_STRING (index.php?/controller/action/param1/param2)
    - PATH_INFO: index.php/controller/action/param1/param2

    Nombre d'arguments illimités, le rewrite serveur est plus simple.

    Pour les problèmes d'includes, il y a l'autoloading:
    http://www.php.net/manual/fr/language.oop5.autoload.php
    Ce que font de base les frameworks.

    Je te conseille de jeter un oeil:
    Composer: https://getcomposer.org/
    Packagist: https://packagist.org/
     
  3. noren
    noren WRInaute accro
    Inscrit:
    8 Avril 2011
    Messages:
    2 816
    J'aime reçus:
    18
    Merci

    Chaud chaud chaud cacao... :mrgreen:
    je sens que je vais bien galérer.

    Donc on peut normalement avoir n'importe quelle forme d'url souhaité? On peut dissimuler le contrôleur et l'action? et avec query_string si je comprend bien on gère x paramètres exact?

    effectivement pour l'autoloading j'avais vaguement lu ca sur un des tutoriels et ça m'avait échappé. :wink:
     
  4. Doubrovski
    Doubrovski WRInaute occasionnel
    Inscrit:
    9 Avril 2011
    Messages:
    443
    J'aime reçus:
    0
    Si tu comptes tout coder à la main, tu peux t'inspirer de ce tuto de grafikart en 8 ou 9 parties :
    http://www.grafikart.fr/tutoriels/php/developper-site-jour1-base-donnees-183

    C'est un MVC plus poussé que le tuto MVC avec un router.php
    Dans le tuto les url sont formatées avec des slash, mais c'est facile de modifier, on peux faire ce que l'on veut. J'avais fait un site avec articles/nom-article-id ou articles/categorie/nom-categorie.
     
Chargement...
Similar Threads - Design pattern MVC Forum Date
Le journal abrasif design Demandes d'avis et de conseils sur vos sites 18 Octobre 2020
Demande d'avis pour mon site webdesigner luxembourg Demandes d'avis et de conseils sur vos sites 23 Septembre 2020
Search Console Couverture :"Url désignée comme no-index" Crawl et indexation Google, sitemaps 8 Décembre 2019
WordPress Comment ajouter une meta author pour désigner l'auteur Référencement Google 22 Juillet 2019
Nouveau design des SERP Google (desktop) mai 2019 Référencement Google 31 Mai 2019
Nouveau design des SERP Google (mobile) mai 2019 Référencement Google 23 Mai 2019
Google Images : Nouveau design (2018) YouTube, Google Images et Google Maps 28 Septembre 2018
AMP / Responsive design Crawl et indexation Google, sitemaps 19 Septembre 2018
Idées pour améliorer mon design et mon contenu Demandes d'avis et de conseils sur vos sites 24 Juillet 2018
Changer design du site et nom de domaine en même temps Demandes d'avis et de conseils sur vos sites 19 Décembre 2017
Problème de design sur mon site et avis sur mon site Demandes d'avis et de conseils sur vos sites 23 Juin 2017
Avis sur powdesign.wifeo.com Demandes d'avis et de conseils sur vos sites 21 Novembre 2016
Google veut imposer le responsive design aux sites mobiles Référencement Google 14 Octobre 2016
Mise en ligne d'un design responsive et évolution du trafic ? Problèmes de référencement spécifiques à vos sites 11 Juin 2016
Quel design choisiriez vous? Demandes d'avis et de conseils sur vos sites 7 Avril 2016
Récapitulatif [Livres recommandés] SEO, Marketing, WebDesign, Ecommerce . Le café de WebRankInfo 5 Mars 2016
Conseil pour 1 contrat simple pour garder le "désigné par" dans le footer après livraison Droit du web (juridique, fiscalité...) 15 Février 2016
Images responsive design et optimisation du chargement Référencement Google 21 Janvier 2016
[Blog] Design, Do It Yourself et écologie Demandes d'avis et de conseils sur vos sites 21 Janvier 2016
Avis sur le design et l'optimisation seo d'un site Demandes d'avis et de conseils sur vos sites 19 Janvier 2016