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

MVC Discussion :

[MVC] Site PHP


Sujet :

MVC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 19
    Par défaut [MVC] Site PHP
    Salut à tous,

    Je suis actuellement en train de vouloir changer de méthodes pour coder mes sites... Actuellement, je réinventais la roue à chaque fois...

    Maintenant, je souhaite donc utiliser un framework qui m'aidera entre-autre à faire les choses proporement. Je me suis donc tourné vers Code Igniter qui m'a l'air simple entre autre...

    Le problème que j'ai maintenant est : Comment bien structurer mes vues / controlleurs.

    Je souhaite faire un site de rencontre et voici donc ce que je souhaite avoir :
    - Une page d'accueil ou l'utilisateur pourra
    > S'identifier via un formulaire
    > Accéder à diverses pages (aide, conditions générales, ...)
    > Voir les derniers membres inscris etc...
    - Une partie membre ou l'utilisateur pourra faire des recherches etc.

    Je pensais donc faire une page "index" qui contienne tous mes liens et fassent des includes du formulaire d'inscription etc... En tout cas, c'est comme ca que j'aurai fait jusque la. Maintenant, je vois bien que cette méthode n'est plus adaptées...

    Je souhaiterai donc savoir comment structurer ? Une vue par bout de code (header, formulaire d'inscription, footer, ...) ? Un fichier "global" qui appellerai tous les autres ?

    Le problème se pose surtout au niveau des conditions. Par exemple, si l'utilisateur est connecté je dois inclure la page 1 sinon la page 2...

    Je vous remercie d'avance pour votre aide !

  2. #2
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Ton problème vient du fait que tu mélange architecture et implémentation.

    MVC te donne des pistes pour la construction de ton architecture logicielle. Ainsi tu te retrouves avec des couches applicatives distincte : les objets métiers, les controlleurs (controlleurs de navigation/règles d'integrité notamment) et les vues, qui sont peuvent en fait n'être que des templates de code html, ou des classes complexes d'affichage.

    Pour ton cas précis, je voterais pour des templates, et un template par morceau d'affichage. C'est à ta couche controller de décider quels sont les morceaux à inclure. Attention, ce n'est pas au controller de construire la page html. Il doit juste dire aux vues de s'afficher.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 19
    Par défaut
    Merci...

    Donc si je comprend bien...

    J aurai par exemple un controleur "accueil" qui pourra s'occuper de charger la page d'accueil, la page d'aide, de conditions générales etc... (selon l'url).

    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
    	// Page d'Accueil
    	function index() {
    		$this->load->helper('url');
    		$this->load->view('commun/header.php');
    		$this->load->view('accueil.html');
    		$this->load->view('form_login_haut.html');
    		$this->load->view('recherche_rapide.html');
    		$this->load->view('photos_accueil.html');
    		$this->load->view('commun/footer.html');
    	}
     
    	// Page d'Aide
    	function aide() {
    		$this->load->view('aide');
    	}
    Un modèle qui s'occupera de chaque éléments sur ma page

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function get_photos() {
     echo 'abcd';
    }
    Et dans mes vues (exemple suivant pour formulaire)

    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
    <div id="col_droite">
        <div id="box_identification">
            <h3>Identification</h3>
            <form name="identification_accueil" method="post" action="">
                <table>
                    <tr>
                        <td>Nom d'utilisateur : </td>
                        <td><input type="text" name="user_login" class="txt_form" /></td>
                    </tr>
                    <tr>
                        <td>Mot de passe : </td>
                        <td><input type="password" name="pass_login" class="txt_form" /></td>
                    </tr> 
                    <tr>
                        <td>Se souvenir de moi : </td>
                        <td><input type="checkbox" name="chk_login_perm" /></td>
                    </tr>
                    <tr><td><input type="submit" value="Connexion" /></td></tr>
                </table>
                <p><a href="./inscription.html">Inscription</a> | <a href="./mot-passe-oublie.html">Mot de passe perdu</a></p>
            </form>
    	</div>

    Donc si je comprend bien, c'est au niveau du controleur que je dois rajouter les conditions...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	function index() {
    		$this->load->helper('url');
    		$this->load->view('commun/header.php');
    		$this->load->view('accueil.html');
    		if ($user_logged = 0) {
    		 $this->load->view('form_login_haut.html');
    		} 
                    $this->load->view('recherche_rapide.html');
    		$this->load->view('photos_accueil.html');
    		$this->load->view('commun/footer.html');
    	}

  4. #4
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Je ferais ainsi. MAis je peux dire des betises ^^

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 19
    Par défaut
    Alors voici ce que j'ai réussi à faire pour l'instant...

    - Découpage de mon site : Voici les différentes parties de mon site
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="<?= $description ?>" />
    <meta name="keywords" content="<?= $keywords ?>" />
    <link rel="stylesheet" type="text/css" href="<?= base_url(); ?>system/application/views/themes/default/css/style.css" />
    <script type="text/javascript" src="<?= base_url(); ?>system/application/views/themes/default/js/niftycube.js"></script>
    <title><?= $title ?></title>
    </head>
        <div id="container">
        	<div id="top">
           		<?= $top ?>
    		</div>
        	<div id="col_gauche">
            	<?= $col_gauche ?>
            </div>
        	<div id="col_droite">
            	<?= $col_droite ?>
            </div>
            <div id="footer">
            	<?= $footer ?>
            </div>
        </div>
    </html>
    Bien sur, tout ce qui est dans colonne gauche et droite est bien sûr dynamique (formulaire de login, champ de recherche....).

    A votre avis, devrai-je donc :
    1) Créer une vue qui contienne toute la colonne de gauche avec des if un peu partout vérifiant la provenance ? (puis même chose pour la droite)
    2) Créer un contrôleur pour la colonne gauche ?

    Je vous remercie d'avance pour votre aide...

    Pas facile tout ca en tout cas

  6. #6
    Membre chevronné

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Par défaut
    Personnellement, j'ai plutot tendance à créer un controler pour chaque vue (une vue n'etant pas un header ou un footer mais une page complete de l'utilisateur).

    Les boucles if c'est extremement chiant à maintenir. Un frameworks est justement la pour eviter ça.

    Neanmoins, il ne faut surtout pas changer toutes ces habitudes de codage du jour au lendemain sinon tu risques de perdre beaucoup de temps et de te melanger dans des concepts dit "avancés"

    Au debut de ton site, je te conseille de faire un truc qui marche avec des if si c'est ce que tu maitrises.

    Apres, entamer un refactoring pour améliorer ton architecture au fur et a mesure de maniere incrémental.
    Je pense que tu verras des possibilités s'ouvrir et que tu comprendras tres vite tout ce que tu peux tirer de ton frameworks (ou au contraire, ne pas faire).

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/01/2013, 13h27
  2. Réponses: 11
    Dernier message: 10/01/2006, 07h23
  3. Problème changement serveur pour un site PHP
    Par izzy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 06/01/2006, 11h34
  4. [CKEditor] Qui utilise FCKeditor sur son site php pour config ?!
    Par guy2004 dans le forum Bibliothèques & Frameworks
    Réponses: 62
    Dernier message: 26/10/2005, 18h24
  5. Question pour un site PHP/MySQL et Javascript
    Par DvP dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/09/2005, 08h23

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