Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1445 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  MVC - PHP et Jquery

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MVC - PHP et Jquery

n°2024084
anycee
Posté le 21-09-2010 à 11:15:25  profilanswer
 

Bonjour à tous et merci de me lire !  
 
Bon voila je suis en train d'essayer de créer une application web en php objet et surtout en mvc et j'ai besoin de conseil !  
 
Je souhaite faire une réel application avec aucun temps de chargement.
 
Elle est structuré comme ceci :  
 
http://img72.imageshack.us/i/layoutcv.jpg/
 
 
J'ai donc à gauche un menu avec des images cliquables " client ", "accueil" qui, une fois cliqués lance ma fonction js callcontent('cat'). Cette fonctions JS vas poster la variable cat dans mon callcontent.php (http://pastebin.com/guNqFmZS) et celui-ci vas renvoyer la vue souhaité.  
 
J'aimerai donc savoir si vous considérez mon callcontent.php comme une forme de contrôleur valide ou si je suis pas du tout sur la bonne voix.  
 
Voila un exemple d'une de mes vue : http://pastebin.com/UFEpFexe  
 
Merci d'avance pour vos conseils :)

mood
Publicité
Posté le 21-09-2010 à 11:15:25  profilanswer
 

n°2024102
skeye
Posté le 21-09-2010 à 11:55:31  profilanswer
 

anycee a écrit :


J'aimerai donc savoir si vous considérez mon callcontent.php comme une forme de contrôleur valide ou si je suis pas du tout sur la bonne voix.

 
Citation :


<?php

 

$managervillage = new VillageManager($db);

 

[...]

 

?>
 
<script>
  $(document).ready(function() {
    $("#tabs" ).tabs();
  });

[...]

 

non.
Tu as des bouts de vue et de modèle dans ton controleur.


Message édité par skeye le 21-09-2010 à 11:56:32

---------------
Can't buy what I want because it's free -
n°2024115
anycee
Posté le 21-09-2010 à 12:34:59  profilanswer
 

Donc si je fais un include de ma vue dans mon contrôleur on considère que ma vue est dans mon contrôleur ?  
 
De quel maniere afficher ma vue si je ne fais pas d'include ?  
 

n°2024116
skeye
Posté le 21-09-2010 à 12:44:21  profilanswer
 

anycee a écrit :

Donc si je fais un include de ma vue dans mon contrôleur on considère que ma vue est dans mon contrôleur ?  
 
De quel maniere afficher ma vue si je ne fais pas d'include ?  
 


 
Euh tu as ton code html directement dans callcontent.php. C'est tout sauf un include, ça.
De la même manière, tu utilises directement un objet "$db" qui est manifestement une connexion à une base de données.
 
Je ne vois pas comment tu peux imaginer avoir une quelconque séparation des couches comme ça.
Le contrôleur n'a pas à savoir que la vue génère du code html. Ni si le modèle est stocké dans une base de données.


---------------
Can't buy what I want because it's free -
n°2024117
anycee
Posté le 21-09-2010 à 12:46:35  profilanswer
 

En fait quand on clique sur un bouton du menu, la fonction js callcontent('var') post les variables sur callcontent.php et celui-ci doit renvoyé la vue, la fonction js vas donc afficher dans ma div la vue.  
 
voila ma fonction callcontent();  
http://pastebin.com/kYgj4cDh
 

n°2024118
anycee
Posté le 21-09-2010 à 12:47:56  profilanswer
 

Je ne vois pas de code html dans mon callcontent.php ( http://pastebin.com/guNqFmZS )

n°2024119
anycee
Posté le 21-09-2010 à 12:49:56  profilanswer
 

Ok par contre pour mon $db, de quel manniere tu structurerais cela toi du coup ? Un petit exemple serait le bienvenue pour que je reparte sur le droit chemin. En tout cas merci pour ton temps.

n°2024126
skeye
Posté le 21-09-2010 à 13:46:59  profilanswer
 

(au temps pour moi, j'ai confondu tes sources)

 

Le mieux serait que tu jettes un oeil au topic php-MVC : http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0


Message édité par skeye le 21-09-2010 à 13:47:20

---------------
Can't buy what I want because it's free -
n°2024143
stef_dober​mann
Personne n'est parfait ...
Posté le 21-09-2010 à 14:57:03  profilanswer
 

Je développe aussi une application web en MVC
en faite j'utilise une classe pour passer les parametres du model au controleur.
je développe :  
le contrôleur fait quelques tests, instancie une classe qui stockera les données, appel un multiActionControler qui appel si nécessaire le model
les données sont retournées en référence au multiActionControler.
vu que le controleur est instancié en utilisant le pattern Singleton, le multiActionControler demande cet instance et rempli la classe qui stocke les données.
ensuite le contrôleur reprend la main et exécute la fonction render qui analyse la classe qui stocke les données et va chercher la vue en lui passant les données.
 
voila c'est un peu long mais je crois que l'idée du MVC est là.
 
Edit : le lien vers ton image est pas bon : http://img72.imageshack.us/i/layoutcv.jpg/


Message édité par stef_dobermann le 21-09-2010 à 15:01:52

---------------
Tout à commencé par un rêve...
n°2024144
stef_dober​mann
Personne n'est parfait ...
Posté le 21-09-2010 à 14:59:49  profilanswer
 

autre chose suite à ta source : http://pastebin.com/UFEpFexe
l'idée d'utiliser des fonctions magic est justement qu'elle sont magic
 
pas la peine de faire :

Code :
  1. $village->__get('nom_village');


ça suffit :

Code :
  1. $village->nom_village;


---------------
Tout à commencé par un rêve...
mood
Publicité
Posté le 21-09-2010 à 14:59:49  profilanswer
 

n°2024148
anycee
Posté le 21-09-2010 à 15:19:45  profilanswer
 

Ah ok Stef_dobermann, effectivement c'est "magique" lol ! J'ai du tomber sur un vieux tuto ou j'ai mal lu ...  
 
En ce qui concerne mon apply du coup j'ai remanier un peu.  
 
Un dossier "Model" avec toutes mes classes métiers et accès aux donnés.  
Un dossier "View" avec mes vues ( http://pastebin.com/vzLqDNKu )  
 
Et un dossier "Controllers" avec un controlleur un controlleur pour chaque vue que je souhaite afficher par exemple :  http://pastebin.com/08i90DsL  
 
Ensuite dans mon index.php  J'ai un appel à mon view/layout.php contenant le design. Et chaque fois que la fonction callcontent('content') est lancé, ça appel mon controller.php  ( http://pastebin.com/ys7ChPd6 )  
 
Puis-je dire désormais que j'utilise le model MVC ?

n°2024153
anycee
Posté le 21-09-2010 à 15:32:28  profilanswer
 

Stef je t'ai perdu à partir d'ici  
"le pattern Singleton, le multiActionControler demande cet instance et rempli la classe qui stocke les données.
ensuite le contrôleur reprend la main et exécute la fonction render qui analyse la classe qui stocke les données et va chercher la vue en lui passant les données" lol. J'imagine qu'à partir d'ici ce n'est plus un simple contrôleur mais un contrôleur plutôt avancé ? Ou alors je dois être très très bête :p

n°2024291
stef_dober​mann
Personne n'est parfait ...
Posté le 21-09-2010 à 21:53:39  profilanswer
 

Le code est plus jolie, une net amélioration par rapport à l'autre :)
 

anycee a écrit :

Ah ok Stef_dobermann, effectivement c'est "magique" lol ! J'ai du tomber sur un vieux tuto ou j'ai mal lu ...  
 
En ce qui concerne mon apply du coup j'ai remanier un peu.  
 
Un dossier "Model" avec toutes mes classes métiers et accès aux donnés.  
Un dossier "View" avec mes vues ( http://pastebin.com/vzLqDNKu )  
 
Et un dossier "Controllers" avec un controlleur un controlleur pour chaque vue que je souhaite afficher par exemple :  http://pastebin.com/08i90DsL  
 
Ensuite dans mon index.php  J'ai un appel à mon view/layout.php contenant le design. Et chaque fois que la fonction callcontent('content') est lancé, ça appel mon controller.php  ( http://pastebin.com/ys7ChPd6 )  
 
Puis-je dire désormais que j'utilise le model MVC ?


 
mais dans le http://pastebin.com/vzLqDNKu
ligne 48 : $ville = $managerv->getville($village->__get('id_ville'));
vu que tu as fait une boucle sur tes villages, puis tu récupère la ville, cela veux dire qu'a 1 village correspond 1 ville, donc pourquoi ne pas revoir ta classe managervillage pour intégré directement la ville à l'intérieur ?
plus simple, une classe en moins à entretenir et à instancier
 

Citation :

Puis-je dire désormais que j'utilise le model MVC ?


 
je pense que tu n'est pas loin, mais le controleur n'est toujours pas censé connaître le moyen d'accéder au données, donc $db n'a rien à faire dans le contrôleur !


Message édité par stef_dobermann le 21-09-2010 à 21:56:57

---------------
Tout à commencé par un rêve...
n°2024299
anycee
Posté le 21-09-2010 à 22:13:29  profilanswer
 

La ville fais partie de mon objet village mais sous forme d'id, ID_VILLAGE, mais si tu connais un moyen de l'inclure directement je suis preneur :p.  
 
Par contre je ne comprend pas pourquoi le controlleur ne peut pas acceder au données.  
 
J'ai encore revu mon model.  
 
J'ai désormais un BaseControlleur ainsi que des extends sur mes modules principaux ClientControleur qui regroupe des methodes pour get/view etc ...  
 
Voila mon clientControleur :  
 
public function show()  
{
 $managerclient = new ClientManager();  
 $managerville = new VilleManager();  
 $clients = $managerclient->getList();  
 
    $this->registry->template->clients = $clients;
 $this->registry->template->managerville = $managerville;
    $this->registry->template->show('client');
}
 
 
public function view(){
 
 
 $managerclient = new ClientManager();
 $managerville = new VilleManager();
 $client = $managerclient->get($id_client);
 $ville = $managerville->getname($client->id_ville);
 
 $this->registry->template->ville = $ville;
 $this->registry->template->client = $client;
 $this->registry->template->show('seeclient');
}
 
 
Le controleur charge donc les données puis appel la vue.  
 
C'est mieu donc :p ?  
 
 

n°2024315
stef_dober​mann
Personne n'est parfait ...
Posté le 21-09-2010 à 22:58:20  profilanswer
 

Citation :

La ville fais partie de mon objet village mais sous forme d'id, ID_VILLAGE, mais si tu connais un moyen de l'inclure directement je suis preneur :p.


on peut chercher, tu hydrate ton objet village depuis une DBB ?
 

Citation :

Par contre je ne comprend pas pourquoi le controlleur ne peut pas acceder au données.


c'est le model qui accède aux données dans un MVC, le contrôleur  
Model : Le model va donc contenir tout la business logic et l'accès aux données. Il doit être indépendant des autres couche, et il ne doit même pas savoir qu'il est utilisé dans un MVC.
View : La vue récupère les données à partir du model, et s'occupe de les afficher. Le controller va donc instancier la bonne view, lui filer le model, et la vue va s'occuper de récupérer ce qu'elle veux.
Controller :Lui va s'occuper de gérer ce que l'utilisateur demande, va instancier le model et la bonne vue, puis gérer tout ça.  

Citation :


J'ai encore revu mon model.  
 
J'ai désormais un BaseControlleur ainsi que des extends sur mes modules principaux ClientControleur qui regroupe des methodes pour get/view etc ...  
 
Voila mon clientControleur :  
 
public function show()  
{
 $managerclient = new ClientManager();  
 $managerville = new VilleManager();  
 $clients = $managerclient->getList();  
 
    $this->registry->template->clients = $clients;
 $this->registry->template->managerville = $managerville;
    $this->registry->template->show('client');
}
 
 
public function view(){
 
 
 $managerclient = new ClientManager();
 $managerville = new VilleManager();
 $client = $managerclient->get($id_client);
 $ville = $managerville->getname($client->id_ville);
 
 $this->registry->template->ville = $ville;
 $this->registry->template->client = $client;
 $this->registry->template->show('seeclient');
}
 
 
Le controleur charge donc les données puis appel la vue.  
 
C'est mieu donc :p ?


 
ce me paraît nettement mieux :)


---------------
Tout à commencé par un rêve...
n°2024317
stef_dober​mann
Personne n'est parfait ...
Posté le 21-09-2010 à 23:14:48  profilanswer
 

anycee a écrit :

Stef je t'ai perdu à partir d'ici  
"le pattern Singleton, le multiActionControler demande cet instance et rempli la classe qui stocke les données.
ensuite le contrôleur reprend la main et exécute la fonction render qui analyse la classe qui stocke les données et va chercher la vue en lui passant les données" lol. J'imagine qu'à partir d'ici ce n'est plus un simple contrôleur mais un contrôleur plutôt avancé ? Ou alors je dois être très très bête :p


mon contrôleur comporte les méthodes de base :  
- il parse l'URL, filtre les paramètres,  
- initialise la route,
- appel un contrôleur secondaire nommé, multiActionControleur, qui le est en réalité le model.
- puis une dernière méthode appelé render (rendu en français), permet à partir de la classe qui stocke les données (que j'ai nommé modelView)
appel la vue (par html, XML, fichier PDF,...)
 
Pourquoi multiActionControleur car il "examine" l'action que l'utilisateur demande (read, list,...) et fait
 
voila, pour ce soir ce sera tout ;)


---------------
Tout à commencé par un rêve...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  MVC - PHP et Jquery

 

Sujets relatifs
utilisation d'un champ date dans une modal "jquery"probleme page PHP sous internet explorer
PHP scandir et accentsjQuery is not defined
[résolu] Authentification PHP / IISCross slide JQUERY
Mettre gallery jQuery dans mon siteChargement des scripts avec Jquery 1.4.2
PHP 5.3.3 déclaration d'un objet[emploi] Recherche développeur PHP/HTML/JS disponible immédiatement
Plus de sujets relatifs à : MVC - PHP et Jquery


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR