IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Les includes de page .php


Sujet :

MVC PHP

  1. #1
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut Les includes de page .php
    Bonjour, je débute avec le Zend Framework.

    Avant j'avais l'habitude de travailler avec quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
    	require_once('include_session.php');
    	require_once('include_doctype.php');
    ?>
    	<title>Test</title>
    	<link rel="stylesheet" type="text/css" href="css/style.css" media="screen" />
    	<script src="./js/scripts_header.js" type="text/javascript"></script>
    	<script src="./js/scripts_navigation.js" type="text/javascript"></script>
    	<script src="./lib/jquery.js" type="text/javascript"></script>
    </head>
    <body>
    	<div id="entete">
    		<?php include 'include_header.php'; ?>
    	</div>
    	<div id="contenu">
     
    		<div id="contenu_header"></div>
     
    		<div id="contenu_content">
     
     
    		<?php
     
    		if(!empty($_GET['p'])) {
     
    			if( $_GET['p'] == "test1" ) {
     
    		 		include ('./window_test1.php');
     
    		 	} elseif( $_GET['p'] == "test2" ) {
     
    		 		include ('./window_test2.php');
     
    		 	} else {
     
    				include ('./window_test0.php');
     
    			}
     
     
    		} else {
    			include ('./window_test0.php');
    		}
     
    		?>
     
    		</div>
     
     
    		<div id="contenu_footer"></div>
     
     
     
    	</div>
    	<div id="pied">
    		<?php include 'include_footer.php'; ?>
    	</div>
    </body>
    </html>
    Maintenant je suis un peu perdu, ou dois-je mettre mon include_header.php qui va se répéter sur toutes mes pages ?

    Mon include_header.php aura du code php, tandis que mon include_footer.php et juste du code html, dois-je les mettre au même endroit ?

    Faut-il des controllers pour ces fichiers ?

  2. #2
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    il va falloir changer tes habitudes! Fini les includes header.php!
    Tu dois changer ta façon de procéder et t'adapter à ce que te propose le concept MVC de ZF
    Commence par lire et faire le tutoriel débutant, dans ce tutoriel tu verra que tu utilise un gabarit (layout). Dans ce gabarit, tu ne va pas faire d'include mais tu va appeler une action d'un de tes controllers, par exemple dans ton layout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?php echo $this->doctype(); ?>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <?php echo $this->headMeta(); ?>
        <?php echo $this->headTitle(); ?>
    </head>
    <body>
        <div id="header"><?php echo $this->action('header','index'); ?></div>
        <div id="content">
            <h1><?php echo $this->escape($this->title); ?></h1>
            <?php echo $this->layout()->content; ?>
        </div>
    </body>
    </html>
    Ensuite tu va créer une action headerAction() dans IndexController et tu va créer la vue correspondante application/view/scripts/index/header.phtml
    Le doctype tu peux le configurer dans ton bootstrap ou directement dans ton layout
    Pour les sessions inspire toi des autres tutoriels Zend_Session ou Zend_Auth ou étudie les composants via la doc officielle.

  3. #3
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut
    Merci pour le lien et l'explication, ça me change complètement mais j'y arrive petit à petit.

    Par contre j'ai des optimisations de code et je ne sais pas trop quoi faire.

    Par exemple où dois-je mettre ces codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');
    Suis-je obligé d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $doctypeHelper = new Zend_View_Helper_Doctype();
    $doctypeHelper->doctype('XHTML1_STRICT');
    pour utiliser :

    De même pour mes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $this->headTitle('Titre principal');
     
    $this->headTitle($this->escape($this->title));
     
    $this->headTitle()->setSeparator(' - ');

  4. #4
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Ces codes ce sont des aides de vue et tu n'a pas besoin de les instancier. Tu les places dans ton layout comme l'exemple que je t'ai donné.

  5. #5
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut
    Code de mon layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php echo $this->doctype(); ?>
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <head>
     
        <?php echo $this->headMeta(); ?>
     
        <?php echo $this->headTitle(); ?>
     
    	<?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/public/css/style.css'); ?>
     
    	<script src="<?php echo $this->baseUrl();?>/public/js/scripts_header.js" type="text/javascript"></script>
     
    	<script src="<?php echo $this->baseUrl();?>/lib/jquery.js" type="text/javascript"></script>
     
    </head>
    Code HTML affiché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <head>
     
     
        <title></title>
    	<link href="/site/public/css/style.css" media="screen" rel="stylesheet" type="text/css" />	
    	<script src="/site/public/js/scripts_header.js" type="text/javascript"></script>
     
    	<script src="/site/public/js/scripts_navigation.js" type="text/javascript"></script>
     
    	<script src="/site/lib/jquery.js" type="text/javascript"></script>
     
    </head>
    Si je ne les instancie pas alors je n'ai pas de balises META (notamment pour l'encodage) ni de titre. Je ne comprend pas ce qu'il faut faire...

  6. #6
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Et t'a essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $this->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');
    ?

  7. #7
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut
    Oui c'est ce que j'ai mis dans mon message précédent, mais où dois-je mettre ce code ?

    Au début de mon layout.phtml ? Dans le Bootstrap.php ? Dans mon IndexController ?

    Pour l'instant j'utilise la méthode _initViewHelpers() dans mon Bootstrap.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    protected function _initViewHelpers()
    	{
    		$this->bootstrap('layout');
     
    		$layout = $this->getResource('layout');
     
    		$view = $layout->getView();
     
    		$view->doctype('XHTML1_STRICT');
     
    		$view->headMeta()->appendHttpEquiv('Content-Language', 'fr');
    		$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
     
    		$view->headTitle('Mon site');
    		$view->headTitle($view->escape($view->title));
    		$view->headTitle()->setSeparator(' - ');
     
    	}
    Mais je n'arrive pas à récupérer le title de ma view.

  8. #8
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Dans ton bootstrap, $view->title = null et ne sert donc a rien
    Moi j'ai par habitude de faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    // Dans mon bootstrap:
    $view->headTitle()->setSeparator(' - ');
     
    // Dans mon layout
    <head>
    	<?php 
    	echo $this->headMeta();
    	echo $this->headTitle($_SERVER['SERVER_NAME']);
        echo $this->headStyle();
        echo $this->dojo();
        echo $this->headScript();
        echo $this->headLink();
        ?>
    </head>
     
    // Dans mon action (par exemple IndexController::indexAction() )
    // je défini le titre de la page
    $this->view->title="Accueil";
    // Je dit a l'aide de vue d'ajouter le titre dans la balise title
    $this->view->headTitle($this->view->title);

  9. #9
    Membre confirmé Avatar de ToxiK
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 152
    Par défaut
    Merci beaucoup pour ton aide, ça y est je m'en suis sorti avec mon layout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme css avec page utlisant les includes php
    Par gaou2 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 24/06/2007, 08h54
  2. Réponses: 1
    Dernier message: 20/09/2006, 00h29
  3. Les pages PHP ne sont pas éxecutées
    Par Pahcixam dans le forum Apache
    Réponses: 6
    Dernier message: 09/06/2006, 13h38
  4. ouverture des balises PHP dans les include
    Par FoxLeRenard dans le forum Langage
    Réponses: 5
    Dernier message: 30/01/2006, 12h08
  5. Réponses: 6
    Dernier message: 28/09/2004, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo