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

Langage PHP Discussion :

Évoluer vers une architecture MVC en PHP [Tutoriel]


Sujet :

Langage PHP

  1. #41
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Points : 18
    Points
    18
    Par défaut
    Merci pour vos réponses. J'avais un peu temps du coup j'ai suivit un peu le tutorial - étant donné que j'avais déjà tout le code de fait. Je me suis contenté de la partie procédurale ce qui m'a permit de n'avoir que peu de changement à faire, la transition à été moins difficile que ce que je pensait. Mais je préfère le résultat, c'est beaucoup moins brouillon. J'essayerais donc des frameworks à l'avenir en particulier Symphony qui a l'air pas mal demandé.

    Par contre j'ai une petite question. J'ai prit pour modele du tuto qui se trouve sur Github (en procédural donc) et je me retrouve donc avec un index.php à la racine et un controleur.php dans le dossier controleur. Mais je vois pas trop l'interêt d'avoir ces deux fichiers, l'un faisant vraiment redite par rapport à l'autre. Je me demande donc si c'est moi qui est loupé quelque chose ou si c'est seulement dû au faites que partie procédurale n'est plus vraiment d'actualité ?

    Pour rappel, ça me donne quelque chose comme ça :

    Code index.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (isset($_GET['page'])) {
     
        if($_GET['page']=='formajoutlien'){
     
            formlien();
     
        }elseif($_GET['page']=='supprlien'){
     
            supprimerlien($_GET['path']);
     
        }[...]
    }

    Code controleur.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Affiche le formulaire pour ajouter un lien documentaire
    function formlien(){
        require 'Vue/vueAjoutLien.php';
    }
     
    function supprimerlien($path) {
        supprLien($path, $_SESSION['num'], $_SESSION['boregister']); //fct supprimant une ligne de la table
        header('Location: index.php?page=accueil');
    }

    Etant donné que toutes les fonctions sont relativement courte (Au plus 4 lignes) c'est pas plus simple de supprimer le fichier controleur.php et de tout mettre dans index.php ?

  2. #42
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Faut poursuivre le tuto pour mieux comprendre l'intérêt.
    Dans la page d'index on met normalement le routeur (qui est aussi une sorte de contrôleur) qui sert à analyser l'url pour inclure des fichiers contenant des contrôleurs spécifiques à la page demandée.

  3. #43
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous !

    Tout d'abord merci pour cet excellent article qui m'a permis de mieux comprendre le principe MVC.
    J'ai tout de même une petite question sur un point que je ne maîtrise pas complètement !
    Est-ce qu'un Contrôleur peut faire appel à plusieurs Vue en fonction de la méthode appelée ?

    Je m'explique :

    Je cherche à réaliser une application qui demande une authentification avant de rediriger vers les fonctionnalités de l'appli !
    J'ai donc mon front controler (Routeur) qui redirige vers un Contrôleur Connexion (ctrlConnexion) qui lui même affiche ma Vue Connexion (vueConnexion) avec le formulaire d'authentification.
    La requête se fait dans le Modele Connexion (mdlConnexion)

    Routeur.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public function routerRequete() {
     
    	try {
    		if(isset($_GET['action'])) {
    			if($_GET['action'] == connexion) {
    				$identifiant = $this->getParametre($_POST, 'identifiant');
    				$mdp = $this->getParametre($_POST, 'mdp');
    				// Traite l'authentification
    				$this->ctrlConnexion->getAuthentification($identifiant, $mdp);
    			} else {
    				throw new Exception("La page demandée n'est pas valide !");
    			}
    		} else {
    			// Renvoie vers la vue qui affiche le formulaire d'authentification
    			$this->ctrlConnexion->connexion();
    		}
    	} catch (Exception $e) {
    		$this->erreur($e->getMessage());
    	}
    }
    ctrlConnexion.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // Affiche le formulaire d'authentification
    public function connexion() {
     
    	$vue = new Vue('Connexion');
    	$vue->generer('');
    }
     
    // Traite l'authentification
    public function getAuthentification($identifiant, $mdp) {
     
    	$identifiant = stripslashes($identifiant);
    	$mdp = stripslashes($mdp);
    	$mdp = md5($mdp);
     
    	// Cherche dans Modele Connexion (mdlConnexion)
    	$row = $this->connexion->getConnexion($identifiant, $mdp);
     
    	// si il y a un résultat
    	if($row !== FALSE) {
    		$_SESSION['id'] = $row->login;
    		$_SESSION['acces'] = $row->acces;
     
    		$vue = new Vue("Agenda"); // page cible
    		$vue->generer('');
    	} else {
    		$vue = new Vue("Connexion"); // page d'authentification avec message d'erreur
    		$vue->generer(array('msgErreur' => "Identifiant ou mot de passe incorrect !"))
    	}
    }
    mdlConnexion.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function getConnexion($identifiant, $mdp) {
     
    	$sql = "SELECT * FROM utilisateur WHERE login = ? AND mdp = ?";
    	$connexion = $this->executerRequete($sql, array($identifiant, $mdp));
     
    	return $connexion->fetch(PDO::FETCH_OBJ);
    }
    Mon Controleur Connexion fait donc appel aux Vues vueConnection et vueAgenda ! Je ne sais donc pas si c'est la bonne méthode ?
    Est-ce que mon code vous semble juste ? Je n'ai pas l'impression de faire une redirection correcte car je ne redéfinis pas l'URL ! Dois-je faire appel à la fonction "header: location" dans mon contrôleur pour la redirection.

  4. #44
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par elfafou Voir le message
    Bonjour à tous !

    Tout d'abord merci pour cet excellent article qui m'a permis de mieux comprendre le principe MVC.
    J'ai tout de même une petite question sur un point que je ne maîtrise pas complètement !
    Est-ce qu'un Contrôleur peut faire appel à plusieurs Vue en fonction de la méthode appelée ?
    Merci pour les compliments

    Pour répondre à ta question, l'architecture du framework est assez rigide et un contrôleur ne peut générer qu'une seule vue.
    La meilleure solution pour répondre à ton besoin (soumettre tout ou partie du site à authentification) est de définir une superclasse abstraite pour les contrôleurs. Cette superclasse est chargée de vérifier si le visiteur est authentifié et redirige vers la page de login si ce n'est pas le cas.

    Je dois mettre à jour l'article pour intégrer cette évolution. En attendant, le cours PDF associé est disponible à cette adresse. Le dépôt GitHub du framework contient la classe Session nécessaire.

    J'espère que ça pourra t'aider à avancer.

  5. #45
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour à toutes et à tous !

    Afin de faire un site plus propre, commencer et comprendre le MVC, j'ai suivit ce tutoriel avec grand intérêt. J'ai réussi jusqu'à présent à faire ce que je voulais comme par exemple un formulaire d'inscription ou même un champ de recherche personnalisé et je vous en remercie. Cependant, je suis arrivé dans une impasse .

    En effet, une fois inscrit, nous pouvons nous connecter et j'arrive à récupérer les données liés à l'utilisateur en passant la vue. Or, puisque j'inclue un menu horizontal dans le gabarit afin d'avoir accès à son profil mais je n'arrive pas à récupérer le fait que la personne soit connectée. Après en cherchant à comprendre bien comme il faut, j'avais trouvé un moyen, c'était de mettre l'intégration du menu dans la vue (une solution assez embêtante malgré tout). Mais en fait, vu qu'on ne peux pas faire genre : $var = include('menu.php'), du coup j'ai abandonné cette solution.

    J'ai aussi essayé d'afficher le menu via Vue.php un peu dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $vue = $this->genererFichier($gabarit, array('titre' => $this->titre, 'contenu' => $contenu,
            'racineWeb' => $racineWeb, 'menuh' => $this->genererFichier($menu, array('menuh' => $menu))));
    Mais en vain. Je ne vois pas du tout comment faire, ni comment procéder vu que je débute à peine en orienté objet .

    J'ai lu les messages de elfafou qui semble avoir un peu les mêmes intentions que moi, mais je n'ai pas trop comprit comme faire via une superclasse abstraite.

    Bref, je ne sais pas si j'ai été très clair... Auriez-vous des suggestions, pistes de réflexion ou une idée de solution ? ^^'

    EDIT : Je n'avais pas vu qu'il y avait des liens pour le PDF et du GitHub, je vais analyser ça, merci . Mais je ne sais pas si c'est encore adapté à mon besoin.

    EDIT 2 : En effet, ça ne correspond pas tellement à ce qu'il me faudrait. En gros, comment pourrait-on faire pour savoir si le membre est connecté dans un endroit de la page et non sur tout une page entière ? Genre s'il est connecté ça affiche les commentaires, sinon il n'y a rien...

  6. #46
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par Quenca Voir le message
    ...

    EDIT 2 : En effet, ça ne correspond pas tellement à ce qu'il me faudrait. En gros, comment pourrait-on faire pour savoir si le membre est connecté dans un endroit de la page et non sur tout une page entière ? Genre s'il est connecté ça affiche les commentaires, sinon il n'y a rien...
    Bonjour, je vais essayer de d'aider à avancer un peu.

    Comme dit plus haut, l'architecture du framework est assez rigide et en conséquence il est impossible d'ajouter des éléments dynamiques autres que le titre et le contenu dans le fichier gabarit.php. Pour éviter de dupliquer du code, la solution est plutôt d'écrire des morceaux de vues et de les inclure dans les vues qui en ont besoin.

    Pour construire une vue personnalisée si l'utilisateur est connecté, tu peux compléter la solution décrite dans le PDF en définissant une autre classe abstraite ControleurPersonnalise qui ajoute automatiquement les données client au moment de la génération de la vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    abstract class ControleurPersonnalise extends Controleur
    {
        /**
         * Redéfinition permettant d'ajouter les infos clients aux données des vues 
         * 
         * @param type $donneesVue Données dynamiques
         * @param type $action Action associée à la vue
         */
        protected function genererVue($donneesVue = array(), $action = null)
        {
            $client = null;
            $nbArticlesPanier = 0;
            // Si les infos client sont présente dans la session...
            if ($this->requete->getSession()->existeAttribut("client")) {
                // ... on les récupère ...
                $client = $this->requete->getSession()->getAttribut("client");
     
                $panier = new Panier();
                $nbArticlesPanier = $panier->getNbArticles($client['idClient']);
            }
            // ... et on les ajoute aux données de la vue
            parent::genererVue($donneesVue + array('client' => $client, 'nbArticlesPanier' => $nbArticlesPanier), $action);
        }
     
    }
    J'ai ajouté sur GitHub un projet d'exemple plus complet que MonBlog et qui utilise cette solution. Voici par exemple un extrait de la vue partielle Vue/_Commun/barreNavigation.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?php if (isset($client)): ?>
        <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                <span class="glyphicon glyphicon-user"></span> Bienvenue, <?= $this->nettoyer($client['prenom']) ?> <b class="caret"></b></a>
                <ul class="dropdown-menu">
                    <li><a href="client/">Informations personnelles</a></li>
                    <li class="divider"></li>
                    <li><a href="connexion/deconnecter">Se déconnecter</a></li>
                </ul>
            </li>
            <li>
                <!--button type="button" class="btn btn-default btn-primary navbar-btn"-->
                <a href="panier/">
                    <span class="glyphicon glyphicon-shopping-cart"></span> Panier <span class="badge"><?= $this->nettoyer($nbArticlesPanier) ?></span>
                </a>
                <!--/button-->
            </li>
        <?php else: ?>
            <li class="dropdown">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                    <span class="glyphicon glyphicon-user"></span> Non connecté <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="connexion/">S'identifier</a></li>
                    </ul>
                </li>
            <?php endif; ?>
    La variable dynamique $client est ajoutée automatiquement aux données de la vue par tout contrôleur qui hérite de ControleurPersonnalise lorsque l'utilisateur est connecté.

    Il faut vraiment que je mette à jour l'article pour intégrer tout ça... En attendant j'espère que ces compléments pourront t'être utiles.

  7. #47
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour/bonsoir et merci pour cette réponse d'une qualité vraiment remarquable !

    J'ai suivit attentivement les instructions et le fonctionnement est en effet correct. Cependant, si jamais j'ai une dizaine voir une cinquantaine de vue avec le menu horizontal s'ajoutant de cette manière, ça ne serait pas très pratique. Surtout que le contenu d'une vue s'affiche via $contenu qui ce situe dans gabarit.php, par conséquent si je fait un bloc dans mon gabarit de cette manière :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <article class="recentes">
    	<span class="titre">Dernières vidéos</span>
    	<span class="separateur"></span>
    	<div class="texte_centre">
    		<?= $contenu ?>
    	</div>
    	<div class="texte_centre"><a href="listevideo" class="plus">Voir toutes les autres vidéos</a></div>
    </article>

    Le menu va lui-même s'afficher à cet endroit. Or, il n'est pas censé se placer à cet endroit, mais juste après la balise <body>.


    En gros l'idéal ce serait que le menu soit affiché dans le gabarit directement sans passer par la vue. J'ai déjà essayé plusieurs choses comme je l'ai dit plus haut mais toujours en vain... x)
    Et lorsque je passe directement dans le gabarit, je ne récupère plus aucune donnée (logique).

    Je ne sais pas si j'ai été clair et si ce que je voudrais faire est réalisable, mais à mon avis il devrait y avoir une technique que j'ignore en tant que grand débutant.

  8. #48
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 35
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    premièrement je tiens à vous remercier pour la qualité de votre tutoriel.

    J'aimerais protéger l'accès à ma zone d'administration par le biais d'un fichier .htaccess, mais je ne sais pas où je dois le placer.

    Ma zone d'administration est accessible à cette url : www.monsite.fr/Administration

    J'ai créé un nouveau contrôleur ControleurAdministration dans le dossier des contrôleurs.

    Avec la structure MVC, je n'ai pas de dossier Administration (uniquement pour les vues), d'où mon désarroi.

    D'avance merci

  9. #49
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par Sephi_999 Voir le message
    Bonjour,

    premièrement je tiens à vous remercier pour la qualité de votre tutoriel.

    J'aimerais protéger l'accès à ma zone d'administration par le biais d'un fichier .htaccess, mais je ne sais pas où je dois le placer.

    Ma zone d'administration est accessible à cette url : www.monsite.fr/Administration

    J'ai créé un nouveau contrôleur ControleurAdministration dans le dossier des contrôleurs.

    Avec la structure MVC, je n'ai pas de dossier Administration (uniquement pour les vues), d'où mon désarroi.

    D'avance merci
    Bonjour,

    Je ne suis pas sûr de bien comprendre votre besoin.

    Est-ce que c'est protéger au sens contrôler l'accès, ou bien protéger au sens interdire cette zone à tous les clients ? J'ai écrit une petite suite à l'article (qu'il faut que je mette en ligne un jour...) pour gérer l'authentification. Elle est ici. Peut-être que cela pourra vous aider à avancer.

  10. #50
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 15
    Points : 10
    Points
    10
    Par défaut authentification
    Bonjour et merci pour ce super cours.

    Je viens d'aller sur votre projet github et vois qu'il y a une nouvelle branche authentification avec l'ajout de cette fonctionnalité.
    Comptez-vous l'expliquer dans votre tutoriel ?

  11. #51
    Membre confirmé

    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 14
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par mika774 Voir le message
    Bonjour et merci pour ce super cours.

    Je viens d'aller sur votre projet github et vois qu'il y a une nouvelle branche authentification avec l'ajout de cette fonctionnalité.
    Comptez-vous l'expliquer dans votre tutoriel ?
    Merci
    Oui c'est prévu depuis longtemps, je vais prendre le temps de le faire d'ici la fin du mois.

  12. #52
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 5
    Points
    5
    Par défaut parametres get
    Déjà un grand merci pour ce tuto, cela fait quelques temps que j'utilise ce framework
    Cependant, je suis confronté à un petit soucis concernant la réecriture d'url:

    dans le cas ou j'ai une adresse plus complexe
    ex: controleur=livres&action=lister&id=3&genre=aventure&etat=ancien
    comment récupérer les 2 derniers paramètres ?

    Je cherche depuis un moment, je ne comprend pas, car sur une url de type post, pas de souci, mais si c'est du get, ca ne fonctionne pas

  13. #53
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Points : 72
    Points
    72
    Par défaut
    A mon avis c'est au niveau du htaccess qu'il faut que je gère cela car celui du tuto est fait que pour 3 niveaux (controleur, action et id).

  14. #54
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    C'est bien ce qu'il me semblait.
    Je crois que je vais donc proceder differement en passant tous mes parametres dans le 3eme niveau et faire un explode sur l'id pour récupérer mes parametres
    Merci qaund même

  15. #55
    Membre du Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Juin 2015
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2015
    Messages : 50
    Points : 61
    Points
    61
    Par défaut numérotation des pages
    Bonjour

    Merci beaucoup pour votre tutoriel qui m'a beaucoup aidé.
    Je suis débutant en PHP et je voulais connaître la procédure pour transposer mon blog dans une architecture MVC procédurale. C'était important pour moi d'avoir des pages "view" afin de faciliter mon travail pour le design du blog en CSS.
    C'est parfait, votre tutoriel explique de manière claire et précise toute la procédure.
    Maintenant, j'aimerais gérer la pagination des billets du blog et afficher un nombre différent de billets par page en fonction des préférences du visiteur.
    Est-ce que vous connaissez un tutoriel qui explique cela ?
    Je connais la procédure de manière ordinaire mais j'ai beaucoup de difficultés à la transposer avec l'architecture MVC procédurale.
    D'avance merci pour votre réponse
    recevez mes meilleurs messages,
    Cyril

  16. #56
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    Salut.

    Excellent. En une lecture, j'ai compris ce qu'était le mvc et comment le mettre en place, alors que plusieurs soirées en cours du soir avec un "prof' m'avaient juste permis de ne rien y comprendre...

    En une journée de prise en mains, j'ai quasiment finalisé un petit site d'une vingtaine de vues... Mille et un mercis!!!

    Néanmoins, j'ai relevé deux petites coquilles

    Point IV.B.3 dans le code du routeur, il manque la balise ouvrante <?php

    Point V.B.1 Dans le paragraphe
    Enfin, la méthode statique privée getParametres() effectue le chargement tardif du fichier contenant les paramètres de configuration. Afin de faire cohabiter sur un même serveur une configuration de développement et une configuration de production, deux fichiers sont recherchés dans le répertoire Config du site : dev.ini (cherché en premier) et prod.ini. La lecture du fichier de configuration utilise la fonction PHP parse_ini_file(). Celle-ci instancie et renvoie un tableau associatif immédiatement attribué à l'attribut $parametres.
    tu dis que le fichier dev.ini est cherché en premier, mais le code donné cherche d'abord le fichier prod.ini.

    A part cela, c'est un excellent tuto!!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #57
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    Excellent tutoriel. (Juste une petite erreur au VI-B : "on peux compléter")

    J'ai poursuivi le tutoriel avec la mise en place des sessions, j'ai juste une petite question :

    Dans la fonction connecter, pourquoi lancer une exception si l'utilisateur oublie de saisir le login ou le mot de passe ?
    "throw new Exception("Action impossible : login ou mot de passe non défini");"
    Car cela va rediriger l'utilisateur vers la page d'erreur du site, et donc il risque de ne pas comprendre qu'il a oublié de saisir son login ou mot de passe.

    Pourquoi ne pas faire comme précedemment lorsqu'il y une erreur dans le login ou mot de passe et ainsi afficher un message d'erreur ?
    "$this->genererVue(array('msgErreur' => 'Login ou mot de passe oublié'), "index");"

    Personnellement voici comment je choisis entre l'utilisation d'une Exception ou bien d'un message d'erreur :
    - On lance une exception lorsque l'utilisateur essai d'accéder à une partie du site qui n'existe pas en modifiant l'url.
    - On actualise la page avec un message d'erreur lorsque l'utilisateur fait appel à une méthode et se trompe/réalise une erreur.

  18. #58
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2015
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Très mauvais tuto, cette manie de partir d'un exemple erroné et de le modifier en permanence a totalement embrouillé mon esprit et a eu raison de ma patience. Impossible de retenir quoi que ce soit en démarrant un cours comme ça.

  19. #59
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par tarte-aux-fraises Voir le message
    Très mauvais tuto, cette manie de partir d'un exemple erroné et de le modifier en permanence a totalement embrouillé mon esprit et a eu raison de ma patience. Impossible de retenir quoi que ce soit en démarrant un cours comme ça.
    Ce n'est pas une manie, le principe est indiqué dans le titre : "Evoluer vers une architecture MVC". L'intérêt est de comprendre l'évolution d'un script procédural vers une architecture MVC, donc forcément il y a des comparaisons/modifications. Il permet de comprendre les avantages que l'on peut tirer de cette architecture et les choix techniques envisagés pour y parvenir. Mais effectivement si ce n'est pas ton attente il y a certainement des tutos plus directs sur le MVC qui te conviendraient mieux.

  20. #60
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    [...]
    Je n'aurais pas mieux écrit...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [AJAX] Ajax avec une architecture MVC en PHP
    Par chrill dans le forum jQuery
    Réponses: 5
    Dernier message: 06/09/2013, 14h43

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