|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() ![]() hugues dupontPompier Inscription : janvier 2010 Messages : 316 ![]() |
j'ai lu plusieurs tuto sur le MVC et je ne comprends pas tout.
Mon post contient plusieurs questions mais elles sont liées les unes par rapport aux autres. d'avance, un IMMENSE merci à vous. Parlez moi avec des mots hyper simples je suis novice et autodidacte. PRIMO: est-ce que tous les fichiers doivent avoir l'extention .php? ou peut-on avoir l'extention .html? si oui quelle différence? (html=vue php=contrôle?) pour l'instant j'ai un fichier où tout est mélangé le visuel est celui-ci form.JPG le code de la page Code :
Pour insérer de la donnée, il me faudra donc envoyer vers un fichier "insertion.php" avec contrôle des données, préparation de la requête et execution de la reqête. Je le ferai en PDO, il parait que c'est mieux contre les failles? Comment avoir accusé de récéption sur le même formulaire. (l'insertion a été effectuée.) Si je change la date, soit dans la case date soit par la liste des dates à droite du formulaire, il va falloir envoyer la valeur (Plutôt GET ou POST?) vers un fichier "selection date.php" -> requête pour savoir si l'agent a déclaré de la donnée et si oui, C'EST LA LE COEUR DE MON SOUCI comment je fais pour renvoyer sur mon formulaire de départ les valeurs des cases à cocher ($tranche1...) , pour effectuer l'affichage. Je ne vois dans aucun tuto décrit le chemin retour. C'est peut-être simple mais je suis autodidacte et je ne sais vraiment pas comment ça se passe. Enfin Concernant le script du calendrier qui prend beaucoup de lignes. Me conseillez-vous de faire un module "calendar.php" et de remplacer toute les lignes de code dans le formulaire principale par: |
||
|
|
00
|
|
|
#2 | |||
|
Membre régulier
![]() Cassian Étudiant Inscription : juin 2012 Messages : 86 ![]() |
bonjour,
Citation:
Citation:
Citation:
de plus, si tu as besoin de cette même partie de code dans une autre page, tu n'auras pas à le réécrire, il te suffira de faire un include. après, pour les autres questions, je ne suis pas sur d'avoir tout compris... si j'ai bien compris, ce que tu veux faire c'est que l'utilisateur rentre la date, coche les cases souhaitées et valide le formulaire. ensuite, les valeurs envoyées doivent être enregistrées sur ta bdd, affichées sur la droite de la page de base et confirmer l'action en écrivant "l'insertion a été effectuée." |
|||
|
00
|
|
|
#3 | ||||||||||||
|
Membre Expert
![]() Aurélien VDCDéveloppeur .NET / Biztalk Inscription : octobre 2008 Messages : 971 ![]() |
J'étais comme toi au début, je lisais beaucoup de tuto sur du MVC maison, je comprenais à peu près, puis finalement pas tant que ça.
Surtout que sur beaucoup de tuto c'est pas vraiment du MVC. Du moins ce sont des versions très très simplifiées. Comme tu le sais le principe est de séparer les couches. On pourrait donc voir ça comme 3 dossiers : - Le premier contient tes vues : on parle donc là que du HTML, ce qui s'affichera à l'écran. A partir d'ici, tous ces fichiers pourrait avoir l'extension .html - Le deuxième contient tes modèles : ces fichiers contiennent les traitements, on aura donc l'extension .php ici. - Le troisième contient les contrôleurs : c'est la logique de ton application, tout passe par lui, tout se décide ici. Sur ta page actuel, tu aurais ton modele.php : Code :
Code :
Code :
Code :
http://www.google.fr/?action=action1controleur A la suite de la déclaration de ton controleur, tu testes la valeur du GET (si jamais le paramètre n'est pas bon, s'il n'existe pas, ou même s'il y en a pas, tu définit une page par défaut : Code :
Code :
Sinon, en MVC, il faut penser réutilisation. Cela veut dire que tu sépares au maximum tes informations, de façon que si tu as besoins de réutiliser, rien qu'un infime bout de code, tu puisses le faire, sans devoir recoder rien que 2 - 3 lignes. Si tu as un calendrier, tu fais un calendrier.php Si ce calendrier utilise des propriétés diverses, tu fais un fichier par propriété. N'est pas peur de créer plusieurs fichiers, même si ceux-ci ne contiennent que 4 - 5 lignes, c'est plus lisible par la suite. ps : Oublie pas non plus de séparer le CSS de la partie HTML ps 2 : Tu devrais regarder du côté de Twig, qui permet de faire de l'héritage de template (créer un design général, et l'utiliser sur n'importe quelle page), ainsi que d'autres propriétés utiles, que tu verras en t'y intéressant.
__________________
Règle N° 1 : Si tout va bien, ne touchez à rien. Je ne réponds pas au MP technique, inutile donc de poser vos questions. Le forum est là pour ça |
||||||||||||
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() ![]() hugues dupontPompier Inscription : janvier 2010 Messages : 316 ![]() |
bonjour et merci à vous deux pour vos réponces
je viens d'essayer de suivre le tuto sur ZEND F mais je n'arrive pas à configurer donc je laisse tombber et je vais (essayer) sur la solution de bob 633. déjà ce n'était pas le code lié à l'affichage. je le mettrai à la fin du post car il est très long du fait qu'il y ai le code du calendrier. je mets les formulaires que j'ai déjà et ceux que je vais créer pour voir si j'ai bien compris. déjà fait: -formulaire d'authentification "login.html" avec fonction de hashe via fichier"login.php" et création d'un token. -formulaire "configuration.php" connection à la base de donnée et fonction cryptage du mot de passe. -formulaire "check.php" pour vérifier l'existance du token (dans le livre que j'ai apparement, il faut que tous les fichiers aient l'extention .php pour que ça fonctionne). -formulaire "logout.php" pour destruction de la session. A faire: - formulaire "calendar.php" pour la fonction calendrier - formulaire "liste_date.php" pour créer la liste des dates où l'agent a déclaré de la disponibilité > date jour. - formulaire "controle_dispo.php" pour vérifier si l'agent à la date du calendrier sélectionné à déclaré de la disponibilité. -formulaire "donnees_utilisateur" pour déterminer les centres d'affectations et si droit administrateurs. -formulaire "gestion_double_engagement.php" prise en charge du numéro du centre de secours. -formulaire "datetime.php" permet de déterminer le créneau actuel. -formulaire "insert_dispo.php" pour déclarer de la disponibilité -formulaire"update_dispo.php"pour modifier de la disponibilité -formulaire"erase_dispo.php" pour supprimer de la disponibilité Pour les trois derniers formulaires, pour vérifier la donnée avant de faire la requête, peut-on utiliser un formulaire "controle_donnee.php" commun? faut-il créer un formulaire "CSS.php"??? où je peux le laisser dans la vue? j'ai pas trop compris le fichier controleur et ce qui suit bob633. Est-ce qu'il faut mettre tous ces fichiers directement dans www, ou faut-il les classer dans différents répertoires comme un MVC? Je vous demande celà car chez nous le responsable informatique est très exigeant sur la sécurisation. ATTENTION, voici le code du formulaire Code :
|
||
|
|
00
|
|
|
#5 | |
|
Membre éprouvé
![]() Yann IUT Informatique Inscription : mars 2011 Messages : 400 ![]() |
Pour la clarté d'une appli c'est toujours mieux d'avoir des dossier différents.
Je sais pas si j'ai une bonne approche du MVC mais part sur une base claire et simple, la quand je lis les postes je vous avoue que je suis un peu perdu. La vue, sert à afficher l'html, donc disons qu'elle a besoin d'afficher un formulaire avec des données contenus en base, la vue demande au controlleur de lui donné ce qu'elle doit affiché pour ce formulaire. Le controlleur lui va demandé au modèle les données qu'il doit mettre dans le formulaire, mettre en forme et renvoie à la vue ce qu'il doit affiché. Citation:
|
|
|
|
00
|
|
|
#6 | |||||||
|
Membre Expert
![]() Aurélien VDCDéveloppeur .NET / Biztalk Inscription : octobre 2008 Messages : 971 ![]() |
Je pense que tu cherches trop compliquer.
L'avantage d'un MVC maison, c'est d'avoir sa propre vision des choses, et de coder comme tu le sens. Le pattern MVC te donne juste une notion sur comment découper ton code pour t'y retrouver. A partir de là, tu fais comme tu veux/peux. Perso, quand j'ai débuté le MVC, je suis partit directement sur Symfony2, pour le côté sécurité derrière. C'est un peu dépaysant au début, car il faut s’imprégner totalement d'une nouvelle méthode de coder, mais quand tu piges la chose, ça devient beaucoup plus facile et logique. Citation:
Dans une application MVC, tu as un fichier principal, qu'on appelle souvent "front controller" car c'est lui qui appelle les autres contrôleurs. Qué zako Pour faire simple, ce front controller peut être ton index.php qui se trouve à la racine de ton site. Toutes les actions doivent se déclencher à partir de ce fichier index.php. C'est pour cela qu'on déclare le contrôleur précédent (dans mon précédent poste) en début de ce fichier, pour pouvoir accéder à toutes les méthodes de ce contrôleur. Ce sont ces méthodes qui appelleront les données et la vue adéquat, personne d'autres ! Imaginons que tu as un menu sur le haut de ton site avec les actions suivantes (dans ton index.php tu appelles les vues header.html, menuhtml et footer.html de page) : - Accueil - Afficher voitures - Afficher motos - Contact Chacun de ces liens enverra sur une url de ce genre : - Accueil : www.nom_site.fr/?action=accueil - Afficher voitures : www.nom_site.fr/?action=voitures - Afficher motos : www.nom_site.fr/?action=motos - Contact : www.nom_site.fr/?action=contact Lorsque tu as déclaré ton contrôleur, tu appelles la méthode que tu veux. Pour t'éviter de faire ça : Code :
Exemple du index.php Code :
Code :
__________________
Règle N° 1 : Si tout va bien, ne touchez à rien. Je ne réponds pas au MP technique, inutile donc de poser vos questions. Le forum est là pour ça |
|||||||
|
|
00
|
|
|
#7 | ||
|
Membre habitué
![]() ![]() hugues dupontPompier Inscription : janvier 2010 Messages : 316 ![]() |
je viens de travailler par rapport à tout ce qui vient d'être dit.
Est-ce que l'arborescence tient debout, ainsi que la répartition des fichiers? où placer le fichier htaccess? arbre.jpg et voici le code a priori merci de me dire si je prends la bonne route ou si je me plante carrément Code :
|
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Aurélien VDCDéveloppeur .NET / Biztalk Inscription : octobre 2008 Messages : 971 ![]() |
Ton dossier "control" c'est le dossier contrôleur ? Car si oui, je pense que tu ne vois pas trop bien la notion de contrôleur encore.
Il faut voir dans la notion de contrôleur quelque chose qui contrôle (non sans blague ). De ce pas, ce sont des fonctions qui sont appeler pour appeler d'autres éléments (modèles, vues, ...). Donc en gros, un seul contrôleur peut rassembler beaucoup d'actions.Sinon généralement, comme dans Symfony2, tu créés 2 dossiers en tête : - un dossier public : qui contient tes images, le css, ... - un dossier private : qui contient tes modèles, tes contrôleurs, tes scripts, ... tout ce qui ne doit pas être vu par un utilisateur. Et c'est là que tu mets ton htaccess pour bloquer ce répertoire et tout son contenu. Sinon est-ce normal que tu es un seul fichier ? Car je vois des includes de tous les côtés ... pour t'y retrouver ça va pas être évident :s C'est le rôle tu contrôleur d'appeler le modèle et la vue adéquates
__________________
Règle N° 1 : Si tout va bien, ne touchez à rien. Je ne réponds pas au MP technique, inutile donc de poser vos questions. Le forum est là pour ça |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() ![]() hugues dupontPompier Inscription : janvier 2010 Messages : 316 ![]() |
En fait je suis à la rue complet car je ne suis pas informaticien pour un sous, je "tripote" , en tout cas tes explications sont claires.
En fait j'ai du mal à voir comment l'information circule. Formulaire de données (html) -> formulaire de contrôle (php) -> formulaire requête sql (php) -> formulaire de confirmation (html) le contrôleur si j'ai compris, est un formulaire qui dit: action1: formulaire de contrôle action2: formulaire de requête sql action3: formulaire de confirmation |
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : mai 2004 Messages : 558 ![]() |
Salut hugodu28,
Je ne me penche pas sur ta gestion d'arborescence qui à l'air pas mal. Par contre, au niveau de ton code, c'est un avis personnel que je donne, dans ta vue tu mélanges éléments de contrôle et modèle. La ligne 17 à 25 ne feraient-elle par parties d'un modèle ? Autre exemple les lignes 65 à 116 ne feraient-elles parties du contrôleur. J'ai pas cherché à comprendre ton script, c'est juste parcouru et vu des choses qui me sautaient aux yeux, d'après mon expérience. Le tutoriel de Julien Pauli permet de façon très simple de comprendre le MVC : MVC en php Dans l'introduction il propose une solution très simple et logique qui se décompose en 3 fichiers mymodel.php, myview.php et enfin mycontroller.php. J'émets juste quelques réserve sur son modèle, qui lui propose un fichier où il n'y a que des fonctions. Je proposerais la même chose, mais le modèle se transformerait en class avec tous les attributs et méthodes qui vont avec. De façon grossière, le modèle serait un abstraction d'une table de la base de données contenant les méthodes CRUD afin de pouvoir manipuler ton modèle dans le contrôleur. Bonne journée
__________________
Sun Certified Java Programmer, SE 6 et Sun Certified Web Component Developer, J2EE 5 |
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() Aurélien VDCDéveloppeur .NET / Biztalk Inscription : octobre 2008 Messages : 971 ![]() |
Citation:
![]() J'ai essayé de faire simple. En MVC, il faut que tu penses URL > Que faire > Qui appeler > Quoi afficher. L'URL, elle contient les informations à afficher (l'action). Que faire : Lorsque tu récupères l'action, tu sais quoi faire (si ton action c'est "Contact", tu dois afficher la page de contact). Mais à ce moment, c'est pas à toi d'inclure la page qui faut, c'est au contrôleur.. Qui appeler : Tu as ton paramètre action. Tu appelles donc ta fonction du contrôleur qui faut. Quoi afficher : Tu es ici dans ta fonction du contrôleur. Ici par contre tu sais quoi inclure pour afficher la bonne page donc tu inclus d'abord ton modèle, qui va se charger de faire ce qui faut (appel BDD, lecture fichier, appels scripts, ...) puis ensuite ta vue. En gros dans ta page de vue, tu dois seulement avoir des echo $donners_PHP, que ton modèle te donnera
__________________
Règle N° 1 : Si tout va bien, ne touchez à rien. Je ne réponds pas au MP technique, inutile donc de poser vos questions. Le forum est là pour ça |
|
|
|
10
|
|
|
#12 |
|
Membre habitué
![]() ![]() hugues dupontPompier Inscription : janvier 2010 Messages : 316 ![]() |
bob633 , je commence à comprendre, il m'aura fallut du temps.
Pour être certain, pour 1 site, il y a 1 contrôleur avec autant de "function" qu'il peut y avoir d'actions. chaque "function" appel via des "include" différentes pages qui mises bout à bout forment un code qui ressemble à peu près à celui que j'ai mis au début de cette discussion? Dites moi que c'est ça S.V.P. |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Aurélien VDCDéveloppeur .NET / Biztalk Inscription : octobre 2008 Messages : 971 ![]() |
Oui ça ressemble à cela
Après suivant tes applications, tu peux diviser aussi en module. Tu pourrais avoir dans une URL www.toto.fr??module=forum&action=afficher_postes Ainsi au lieu d'avoir un seul contrôleur qui aurait des dizaines et des dizaines d'actions, tu peux diviser. Sur ta page index.php, au lieu d'appeler toujours le même contrôleur, tu peux l'appeler en fonction du module. Ceci te permet de diviser tes actions par thème : controleur forum (avec des fonctions afficher_poste, afficher_un_poste, afficher_xxx), controleur site (afficher_contact, affichier_calendrier), controleur utilisateur (afficher_profil, ajouter_utilisateur, ...). Mais quand on débute, il faut voir simple, et pas trop complexifier la chose. Tu verras de toi même que quand tu seras un unique contrôleur, tu vas trouver bizarre de tout mettre dans le même alors que tu pourrais séparer pour bien faire les choses (et pas avoir un contrôleur de 5000 lignes ).
__________________
Règle N° 1 : Si tout va bien, ne touchez à rien. Je ne réponds pas au MP technique, inutile donc de poser vos questions. Le forum est là pour ça |
|
|
00
|
|
|
#14 | ||
|
Membre habitué
![]() ![]() hugues dupontPompier Inscription : janvier 2010 Messages : 316 ![]() |
Bon ba ça c'est limpide en tout cas merci pour ta patience.
La der des der et après je mets "résolu" concernant l'arborescence: -dossier "public": toutes les images du site et les CSS -dossier "private": tout le reste,... y compris les vues??? le index.php??? concernant le .htaccess pour bloquer la lecture du dossier private. Le plus simple, c'est de n'avoir que des XXX.php et le code du .htaccess serait: Code :
|
||
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Aurélien VDCDéveloppeur .NET / Biztalk Inscription : octobre 2008 Messages : 971 ![]() |
Oui tu peux y mettre les vues, les modèles etc
Dans Symfony, les css se trouvent dans la partie public (surement parce qu'on peut mettre des liens d'images dans les css). Concernant le .htaccess, symfony2 prépare le .htaccess avec seulement ce bout de code : Peut-être une piste ... car si tu veux bloquer des scripts .js ou autre extensions, c'est pas forcément évident avec plusieurs lignes. Mais je passe mon chemin pour le côté sécurité et accès aux données à quelqu'un qui connait mieux
__________________
Règle N° 1 : Si tout va bien, ne touchez à rien. Je ne réponds pas au MP technique, inutile donc de poser vos questions. Le forum est là pour ça |
|
|
00
|
|
|
#16 |
|
Membre habitué
![]() ![]() hugues dupontPompier Inscription : janvier 2010 Messages : 316 ![]() |
ok et bien je pars avec ça sous le bras. Merci
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com