Bonjour,
J'ai suivi le tutoriel PHP 'créer un mvc' et j'ai passé deux jours à reconstruire mon site...
J'ai cependant quelques questions pour aller plus loin.
Quelle est la méthodologie qui permet d'intégrer un module supplémentaire au sein d'une page, ce module faisant appel à la base de donnée, mais ne dépendant pas des paramètres passés dans l'url ? Par exemple un module avec les utilisateurs connectés, un module de connexion, un module d'affichage d'images... etc
Une réponse a été donnée dans les commentaires du tuto, mais elle est trop abstraite pour moi :
Il faudrait créer une fonction (helper) qui permettent d'appeller une action d'un controller et qui récupèrerais le retour pour l'insérer là ou tu veux. du style
get_element('sidebar');
Tu as l'idée, faut faire le code :)
Cette fonction doit elle être intégrée dans le controller principal ? (/core/controller.php)
Merci !
Mes questions n'ayant pas de succès, j'ai reformulé mon post en espérant trouver quelqu'un qui connait ce tutoriel.
A+
Bonjour, il faut juste qu' à partir d'une vue: tu puisse appeler une fonction dans le controller de la vue, cet fonction peut aller chercher sa source un fichier model qui correspond a une table(s], et le controller renvoie à la vue les données pour la mise en forme.
c est se que j'ai utilisé pour mon menu personnalisé. sur ce forum...
Merci, je commence à m'y retrouver un peu mieux après pas mal de lecture, y compris des cours sur la POO PHP car j'avais quelques incertitudes.
J'ai une solution qui correspond à peu prêt à ce que tu m'expliques, mais j'ignore si elle est correcte ou sécurisée :
Dans le cas où je veux appeler mon module sur la sidebar, je fais l'appel de méthode dans le <u><strong>layout</strong></u> (page qui contient le html du header, de la sidebar, du footer du site).
<?php
if(method_exists(Controller, get_module)){
Controller::get_module(module_connexion);
}
?>
La méthode est donc dans le controller général (/core/controller.php) :
function get_module($nom_module){
$url_module = ROOT.'app/views/modules/'.$nom_module.'.php';
if (file_exists($url_module)){
require(ROOT.'app/views/modules/'.$nom_module.'.php');
}
else{
echo 'Module inexistant';
}
}
Cette solution est-elle potable, ou du moins méthodologiquement correcte pour un mvc ?
Cette méthode ne concerne que les modules qui n'utilisent pas la base de donnée.
Bonsoir,
1°) Utilisez-vous un framework personnel, ou autre ?
2°) Ces modules sont à integrer sous form de blocs(comme dans les portails de forum: profils, qui est en ligne, sujet recents...) dans une ou plusieurs pages?
3°) je suppose qu'ils devront être modulable(actif, ou inactif par administration ainsi que le choix de l' emplacement dans la page d'insertion).
4°) la sidebar se trouvera là , ou tu doit inserer tes modules:
dans view/accueil pour une page d acceuil
view/post pour un blog
view/layout pour tout le site
5°)l'exemples d'un sidebar pour un blog est trés bien expliqué dans le tuto "Developper un site de A à Z" qui suit la methode MVC.
J'utilise un 'framework' personnel directement inspiré du tutoriel 'créer son mvc'.
J'ai donc adopté la même architecture que le tutoriel :
/core
/models
/controllers
/views
index.php
Les modules sont soit des éléments à intégrer dans la sidebar sous forme de blocs sur toutes les pages :
-Module de connexion lié au forum
-Modules adsense
Soit des modules à intégrer dans le contenu d'une seule page :
-Module d'images aléatoires qui utilise la base de donnée
Mes modules sont rangés dans /view/modules/
En voulant intégrer le module de connexion dans ma sidebar j'ai placé l'appel de méthode dans le layout :
<?php
if(method_exists(Controller, get_module)){
Controller::get_module(module_connexion);
}
?>
Est-ce que cet appel de méthode dans le layout est correct pour une architecture mvc ?
En fait je me complique la vie pour rien non ? Si les modules sont simplement des codes html avec quelques conditions et variables php, je peux faire un simple require() dans mon layout ?
J'essaie de trouve le tutoriel dont nous parlez, merci !