Bonjour,
Je souhaiterai solliciter votre aide sur un casse-tête (pour moi du moins ^^).
J'apprend tout doucement le développement en POO via Grafikart et sa formation associée. Le MVC est installé et fonctionnel.
Sur la transformation de mon ancien développement (que j'adapte en POO du coup) je rencontre un souci.
Je dispose d'un template avec deux/trois "header" qui sont affichés avant le ob_start (la fameuse variable "content" )
Sur mon ancien développement, c'était du rapide :
<?php
function view_headerHome(){
?>
Du HTML tout simple
}
?>
<?php if(!empty($headerhome)): echo view_headerHome(); endif; ?>
En sommes l'idée serait d'afficher , avec une simple variable (0 ou 1 pour afficher) ce header suivant la page en cours.
J'ai testé de reprendre l'idée du titre de la page (cf tutoriel TP : Création des classes Table) mais malheureusement, ça ne fonctionne pas et par moment je dois pouvoir récupèrer plusieurs variables.
J'ai réussi à faire quelque chose mais je m'écarte totalement de la POO (ce qui n'est pas le but) :
<?php if(!empty($headerHome)): include '../index/headerhome.html'; endif; ?>
<?php $titleshowcase = '1' // Si 1 on affiche ?>
Avez-vous une idée afin de pouvoir gérer ça plus facilement et plus proprement via le MVC ?
Merci.
Bien à vous.
PS : Désolé pour le pavet ;)
Bonsoir.
Pourquoi n'utilises-tu pas le concept de layout ?
Par contre, le principe du MVC, c'est de réserver le code HTML pour la partie Vue/View, tu n'es donc pas censé avoir du code HTML, dans les parties Controller et Model.
Donc, faire le code suivant est à proscrire :
<?php
function view_headerHome(){
?>
// Du HTML tout simple
<?php
}
?>
Bonjour SelMak,
Je voudrais bien t'aider, mais avant d'aller plus loin que veux tu dire par "savoir si le titre principale est rempli" ?. A quel moment de l'application cette variable "$headerhome" est-elle renseignée et de quelle manière?
Cdt
Alain9034
Bonsoir Alain,
Oula oui, je suis parti un petit dans tous les sens. Je vais m'expliquer plus clairement :)
Actuellement, j'ai un système qui gère des functions suivant les pages affichées.
La function "view_headerHome" affiche un message de bienvenu avec du textes et des liens (du pur HTML/CSS).
La variable "$headerhome" me sert simplement pour activer ou non le message de bienvenu. Ainsi, j'ajoute cette variable dans chacune des pages (avec 1 pour afficher ou 0 pour ne pas voir ce container).
Regarde sur Grafikart.fr, quand tu n'est pas connecté, un header est affiché avec noté (Apprenez de nouvelles choses etc.). Je cherche juste à réaliser cela.
Concernant le titre principal, ce genre de header s'affiche avec par exemple : le titre du document et la catégorie associée juste en dessous.
Il y a ce même principe pour la page connexion/enregistrement utilisateur.
Je trouve pas de solution pour réaliser ça en POO, sans ajouter de function dégueulasse avec plein de HTML.
Exemple pour la home :
....
<div class="clearfix"></div>
<?php if(!empty($headerhome)): echo view_headerHome(); endif; ?>
<?php if(!empty($contenttop)): echo view_contentTop_tpl(); endif; ?>
<!-- Site::Title content page -->
<?php if(!empty($titleshowcase)): ?>
<section class="titleCase text-center"><h1><?php echo $titleshowcase ?></h1> <h3><?php echo $descriptionshowcase ?></h3></section>
<?php endif; ?>
<!-- Site::Partner Tool -->
<?php if(!empty($partnertool)): echo view_partnerTool(); endif; ?>
<!-- Site::Web content page -->
<section id="contentWebsite">
<!-- TitleCircle cf function.tpl.php -->
<div class="wrapper ">
<div class="container-fluid">
<?= $content ?>
</div>
.....
Si la variable $titleshowcase n'est pas vide, ça affiche la div.section avec le titre de la page en cours
La function view_contentTop_tpl() affiche le formulaire de connexion dans une autre div.section
<?php
function view_headerHome(){
?>
<section class="headerHome wrapper">
<h4>Texte 1 </h4>
<h1>Texte 2</h1>
<h4>Texte 3</h4>
<div class="homeLinkOr">
<a href="#" class="btnHome btnHome-blue">Lien 1</a>
<a href="#" class="btnHome btnHome-white">lien 2</a>
<span>ou</span>
</div>
<h3><u>Texte 4</u></h3>
</section>
<?php
}
?>
Ceci est le message d'accueil qui s'affiche uniquement en home du site.
Tout ce "beau" monde s'affiche avant l'ob_start() et en FullWitdh en dehors du container principal, nommé ici div.class.container-fluid
Je n'arrive pas non plus à récupérer une variable dans le template :( (La POO, pas si simple ^^)
Merci :)
Bonjour Lartak,
J'en suis venu à cette idée également. Je vais directement insérer les functions dans les vues, je pense aussi que c'est le plus simple pour débuter. Quand je maitriserai mieux le POO je réaliserai un truc plus dynamique et plus sympa.
Merci à vous deux :).