JeuWeb - Crée ton jeu par navigateur
Utiliser un template sur un projet qui n'en a pas - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Utiliser un template sur un projet qui n'en a pas (/showthread.php?tid=5593)

Pages : 1 2


Utiliser un template sur un projet qui n'en a pas - php_addict - 27-07-2011

Bonjour

je me trouve face à un problème, car jusqu'à maintenant je n'utilisais pas de moteur de template, voici ce que j'avais l'habitude de faire:

Contrôleur

//_______________________________________
// les classes |
//_______________________________________|
require_once('class/connection.php');
require_once('class/session.php');
//_______________
// les FONCTIONS |
//_______________|
require_once('fonctions/common.php');
//_______________
// le MODEL |
//_______________|
require_once ('model/index.php');


$VIEW['membres']=GetListeMembres(); // renvois un array sous la forme array(0 => 'Bob' , 1 => 'Arthur' , 2 => 'John')


//____________
// LA VUE |
//____________|
require_once ("view/index.php");

mon fichier VUE "view/index.php"


<html>
<body>

<?php
foreach($VIEW['membres'] as $id=>$pseudo)
{
echo $pseudo . ' ';
}
?>

</body>
</html>

L'avantage étant que je peut me servir de $VIEW['membres'] dans toutes les parties de ma vue (header, footer, colonne gauche, droite, etc...) (c'est un exemple, aucun intérêt d'afficher ça en footer...)

Le hic vous l'aurez compris c'est que toutes mes vues contiennent la mise en page générale (header, footer, colonne gauche, droite, etc...) et le jour ou je veut changer de mise en page il faut que je me tape une par une toutes les vues (une 100aine)

auriez-vous des conseils à me prodiguer pour que je puisse utiliser un moteur de template sans trop changer le fonctionnement de mon contrôleur ? Si oui quel moteur (j'ai essayer rainptl, tiny but strong) ?

Je sais que c'est mal ce que j'ai fais, à ma décharge je suis amateur (acharné)

Bonne journée à vous



RE: Utiliser un template sur un projet qui n'en a pas - Ter Rowan - 27-07-2011


//_______________________________________
// les classes |
//_______________________________________|
require_once('class/connection.php');
require_once('class/session.php');
//_______________
// les FONCTIONS |
//_______________|
require_once('fonctions/common.php');
//_______________
// le MODEL |
//_______________|
require_once ('model/index.php');


$VIEW['membres']=GetListeMembres(); // renvois un array sous la forme array(0 => 'Bob' , 1 => 'Arthur' , 2 => 'John')


//____________
// LA VUE |
//____________|
require_once ('view/header.php');
require_once ('view/left.php');

require_once ("view/contenu.php");

require_once ('view/right.php');
require_once ('view/footer.php');

vu ton découpage, je pense à un truc comme ça. Evidemment si tu as plusieurs constructions possibles - deux colonnes à gauche etc.., tu peux aussi passer par un seul fichier php (par construction) qui attend un paramètre (soit via un appel de fonction, soit juste par une variable) le "view/contenu.php"


pour les moteurs de template, je ne sais pas te répondre


RE: Utiliser un template sur un projet qui n'en a pas - php_addict - 27-07-2011

merci j'avais pensé à ca, je crois que c'est le mieux que je pourrais faire...

Les moteur de template ca à l'air pas mal mais c'est soit trop compliqué (smarty) soit avec trop peu de fonctionalité, et après tout PHP est déjà en lui même un moteur de template en fait


RE: Utiliser un template sur un projet qui n'en a pas - Arius Vistoon - 27-07-2011

oula....:'(

pour le moteur de template, oui, je te conseille d'en prendre un sachant qu'une fois le moteur choisit (ou pas choisit d’ailleurs), il te sera très difficile d'en changer.
(a une époque) Smarty étant celui que je recommanderai (maintenant, j'en ai aucune idée, surtout que le moteur template, j'ai tendances a le faire moi-même).

Sinon,
si je puis me permettre, j'espère que tu ne le prendra pas mal, comme dit je ne sais plus qui certainement un grand sage parmi les sages, c'est par ces erreurs que l'on apprend le mieux, mais pour cela, faut-il encore savoir ou et quand faisons nous des erreurs !
....bref, c'est quoi ce code :malade:

1) tu as un contrôleur, comme son nom l'indique un contrôleur..contrôle (sisi et pourtant je suis nul en français). Ceci dit, a ta décharge, je suis persuadé que beaucoup font comme toi

2) un modèle (dans le sens ou je l'entend) ne peut pas avoir de page intitulé index.php, c'est pas son rôle (sauf si index.php est mal nommé)

3) tu sembles ne pas utiliser d'objet issus de la base de donnée, quelque soit le type relationnel, xml etc.. (et pourtant tu semble avoir un modele).
Typiquement getListMember doit etre une méthode d'un objet (disons au hasard, l'objet Jeu, car tu cherche a avoir la liste des membre de quoi..du jeu et c'est jeu que tu dois instancié et c'est donc lui qui se retrouvera sur toutes tes pages). si tu peux éviter les fonctions..évite, c'est le mal ! (genre croisement des effluves ! Big Grin)

4) vue (ou view) ne sert pas a ca (il y a très certainement une incompréhension du modèle MVC..qui selon moi est bien pauvre mais bon, c'est un autre debat). une vue sert a voir (ok), mais a voir une page (toute ta page, et non pas des morceaux de pages..rien ne t’empêche ensuite dans ta vue de le découper en morceaux comme te le montre..en gros... Ter Rowan) et par conséquent elle ne peut pas s’appelait index.php..ce qui te pose un problème de référencement par la suite au passage....a moins de maitriser parfaitement le rewriting d'url

5) on ne met jamais de code php dans du html, xsl, xml, css etc... d'ou la nécessité d'avoir un moteur de template



RE: Utiliser un template sur un projet qui n'en a pas - php_addict - 27-07-2011

merci pour ta réponse, et je ne le prends pas mal, pas de souci, je n'ai pas tes compétences et c'est pour cela que tes réponses sont pour moi du pain bénit car je suis amateur...

je me dis actuellement ceci: La séparation des couches à tout prix peut être limitant (MVC , moteur de template, POO), non ?

(27-07-2011, 12:32 PM)Arius Vistoon a écrit : pour le moteur de template, oui, je te conseille d'en prendre un sachant qu'une fois le moteur choisit (ou pas choisit d’ailleurs), il te sera très difficile d'en

c'est bien ce qui me dérange dans les moteurs de template, si tu choisis mal...t'es mal...

(27-07-2011, 12:32 PM)Arius Vistoon a écrit : 1) tu as un contrôleur, comme son nom l'indique un contrôleur..contrôle (sisi et pourtant je suis nul en français). Ceci dit, a ta décharge, je suis persuadé que beaucoup font comme toi

en réalité ce n'est pas un contrôleur unique:

index.php est mon contrôleur pour l'url -http://www.monsite.com/index.php
model/index.php est le modèle pour ce contrôleur
view/index.php est la vue pour cette url (-http://www.monsite.com/index.php)

(27-07-2011, 12:32 PM)Arius Vistoon a écrit : 3) tu sembles ne pas utiliser d'objet issus de la base de donnée, quelque soit le type relationnel, xml etc.. (et pourtant tu semble avoir un modele).
Typiquement getListMember doit etre une méthode d'un objet (disons au hasard, l'objet Jeu, car tu cherche a avoir la liste des membre de quoi..du jeu et c'est jeu que tu dois instancié et c'est donc lui qui se retrouvera sur toutes tes pages). si tu peux éviter les fonctions..évite, c'est le mal ! (genre croisement des effluves ! Big Grin)

je ne code pas en POO (très peu) mais utilise PDO, donc je passe l'objet de connection dans mes focntions de mes modèles

(27-07-2011, 12:32 PM)Arius Vistoon a écrit : 5) on ne met jamais de code php dans du html, xsl, xml, css etc... d'ou la nécessité d'avoir un moteur de template

oui je crois avoir compris le principe des templates, cependant vu que je n'en utilise pas à présent, je dois faire des echo, foreach dans mes vues, pour afficher les données récupérées par mon modèle





RE: Utiliser un template sur un projet qui n'en a pas - Anthor - 27-07-2011

(27-07-2011, 01:18 PM)php_addict a écrit :
(27-07-2011, 12:32 PM)Arius Vistoon a écrit : 5) on ne met jamais de code php dans du html, xsl, xml, css etc... d'ou la nécessité d'avoir un moteur de template

oui je crois avoir compris le principe des templates, cependant vu que je n'en utilise pas à présent, je dois faire des echo, foreach dans mes vues, pour afficher les données récupérées par mon modèle

En même temps quel utilité d'avoir un moteur de template ! Si c'est pour parser comme un porc un [foreach] au lieu d'un <?php foreach: ?> natif...


RE: Utiliser un template sur un projet qui n'en a pas - php_addict - 27-07-2011

(27-07-2011, 02:30 PM)Anthor a écrit : En même temps quel utilité d'avoir un moteur de template ! Si c'est pour parser comme un porc un [foreach] au lieu d'un <?php foreach: ?> natif...

oui effectivement...quel moteur me conseilles tu?



RE: Utiliser un template sur un projet qui n'en a pas - Arius Vistoon - 27-07-2011

le fameux (hum) MVC peut paraitre limitant mais je t'assure qu'il te fais gagner du temps.
Exemple concret et vécut :
mon boss : il faut implémenter un systeme de droit dans l'interface, et je veux que ce systeme soit la roll royce des systemes de droits, que ce soit blindé de partout , mais facile a utiliser (et bien sur transparent pour l'utilisateur) et je veux aussi que ce soit super fin, que chacue champs d'un formulaire soit soumis a ce systeme de droit. Bref, je veux le must
moi : ok, je vais y réfléchir...j'ai carte blanche ?
mon boss : bien sur
3 mois plus tard
moi : c'est fais, j'ai mis au point en syteme adéquate, néanmoins, il va fortement ralentir l'application, surtout dans les grilles ajax. ca marche comme ca..blabla
mon boss : mais c'est géniale, on peut le déployer quand et cela prendra combien de temps.
moi : on peut commencer des demain a le deployer sur toutes les applications et cela prendra disons..1 mois
mon boss : 1 mois seulement, mais comment c'est possible ?
moi : l'avantage d'avoir une couche MVC entierement objet, imaginer et concu par votre serviteur
1 semaine plus tard
moi : c'est fait, testé et recetté en interne
mon boss: Arius, tu me surprendra toujours !

autre exemple :
Microsoft rachète mon logiciel (et ma boite au passage) mais considère qu'il est trop "open-source" a son gout (on se demande pourquoi...)
Micosoft maison mère: ca va pas, il faut enlever tout ces truck open source avec des licences qui pourrait nous faire aller en justice..et perdre
microsoft filiale (mon boss quoi) : bas de soucis, le logiciel et super modulable, il nous faudra 3 mois pour le faire
Microsoft maison mere : 3 mois ? on compter négocier pour ne pas descendre en dessous de 6 mois. Du coup, pas besoin de négocier, mais 3 mois vraiment ?
mon boss : oui oui, 3 mois
..1mois plus tard...
moi : c'est fais, tout a ete "microsofisé" (même ma fiche de salaire)
mon boss : hehe, j'avais dit 3 mois a la maison mère en pensant que vous (moi et mon équipe de 3 personnes) allier le faire en 2...1 mois c'est le top Wink

tout ca pour dire que ce qui parait "limitant" /contraignant au début (comme un cahier des charges fonctionnelle sans avoir aucune idée du code qui va aller derriere, d'ailleur on s'en contrefiche-j'insiste, le code on s'en contrefiche-, suivit d'un cahier des charges technique, de bien etre en MVC, de bien etre en objet, de bien suivre la syntaxe et la sémantique des langages, nomenclatures des noms etc..) est réellement un énorme gain de temps par la suite, et quand je dis énorme, je dis ENORME.

Sinon, tes autres points :
le fais de pas choisir de moteur de template, c'est choisir un moteur de template (le sien) et donc si tu choisis mal, tout pareil, t'es mal sauf qu'il est plus facile de migrer un moteur de template "officiel" vers un autre moteur de template "officiel" que de son moteur a soi vers ou venant d'un officiel

Citation :index.php est mon contrôleur pour l'url -http://www.monsite.com/index.php
model/index.php est le modèle pour ce contrôleur
view/index.php est la vue pour cette url (-http://www.monsite.com/index.php)
pas bon du tout...genre pas du tout
tu ne peux pas avoir du 1 pour 1 (sinon quel est l'intéret ? autant tout rassemblé ?)

si le controleur est (en partie) lié a une vue, le modele n'est jamais lié a un controleur ou une vue (genre JAMAIS), ce que font les type pro en base de donné, ne devrait pas avoir de lien avec ce que font les type pro en developpement, ni avoir de lien avec ce que font les type pro en design..surtout pas.
En clair, tu peux considerer que tu es en MVC si demain, tu peux changer entièrement ton modele sans impacter d'un iota ta vue, ton design. (pour etre franc, il y aura toujours un petit truc a changer, mais cela doit rester de l'autre du négligeable). et si tu peux séparer tes equipe en 3 groupes qui travaille chacun de leur coté sans avoir besoin réellement de communiquer nesemble car faisant des boulot totalement distinct..la tu peux dire que tu fais du MVC.
sinon, etre en PDO, ce n'est pas avoir un modele ! cela sert juste de fondation au modele, rien d'autre. Avoir un modele c'est généralement (dans le cas de php) utiliser PDO, mais le contraire n'est pas vrai.

Citation :vu que je n'en utilise pas à présent, je dois faire des echo, foreach dans mes vues, pour afficher les données récupérées par mon modèle
tu n'as pas besoin d'avoir un moteur de template pour prendre de bonne habitude Wink
faire du php (moteur de template ou pas) dans du html/xsl/xml/css etc.. c'est toujours mal



RE: Utiliser un template sur un projet qui n'en a pas - Anthor - 27-07-2011

(27-07-2011, 02:39 PM)php_addict a écrit :
(27-07-2011, 02:30 PM)Anthor a écrit : En même temps quel utilité d'avoir un moteur de template ! Si c'est pour parser comme un porc un [foreach] au lieu d'un <?php foreach: ?> natif...

oui effectivement...quel moteur me conseilles tu?

Aucun PHP est amplement suffisant...


RE: Utiliser un template sur un projet qui n'en a pas - Viciousity - 27-07-2011

Je confirme que PHP est amplement suffisant pour faire cela.
Ne pas confondre moteur de template et View de MVC, c'est totalement différent.

Sinon je peux conseiller http://blog.ericlamb.net/2010/01/get-rid-of-html-templates-with-haml/