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

Langage PHP Discussion :

Exécution d'une fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 43
    Par défaut Exécution d'une fonction
    Bonsoir,

    j'ai pas trop su comment nommé le sujet de mon message mais j'essaierais d'être le plus clair possible ^^

    J'utilise des méthodes afin d'afficher les différentes pages de mon site de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Méthode qui affiche la page d'accueil du site
    function afficherAccueil()
    {
    $a = new Affichage();
    $a->set_file('MODELE','index.tpl.php');
    $a->set_var('Keywords',KEYWORDS);
    }
    mais j'aurais voulu centraliser toutes les variables de méta dans une fonction de cette manière :

    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
    // Méthode qui affiche la page d'accueil du site
    function afficherAccueil()
    {
    $this->template('index.tpl.php','Accueil');
    $a = new Affichage();
    $a->set_var('title','test');
    }
     
    // Méthode qui génère la page HTML en fonction du template
    function template($page, $titre)
    {
    $a = new Affichage();
    $a->set_file('MODELE',$page);
     
    $a->set_var('title',APPLICATION.' : '.$titre);
    $a->set_var('Author',AUTHOR);
    $a->set_var('Publisher',PUBLISHER);
    $a->set_var('Reply-to',REPLY_TO);
    $a->set_var('Description',DESCRIPTION);
    $a->set_var('Keywords',KEYWORDS);
    $a->set_var('Indentifier-URL',IDENTIFIER_URL);
    $a->set_var('Copyright',COPYRIGHT);
    $a->set_var('Robots',ROBOTS);
    $a->set_var('Revisit-after',REVISIT_AFTER);
    }
    le problème c'est que de cette façon la variable test ne s'affichera pas sur la page... je sais pas comment faire pour faire appel à la fonction des méta tout en gérant les variables sans la méthode mère !

    Quelqu'un m'a dit de déclarer $a en protected, d'en faire appel dans la fonction afficherAccueil, et de l'utiliser comme ça dans la méthode template :

    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
    class Index
    {
    protected $a;
     
    // Méthode qui affiche la page d'accueil du site
    function afficherAccueil()
    {
    $a = new Affichage();
    $this->template('index.tpl.php','Index');
    $a->set_var('test','test');
    }
     
    // Méthode qui génère la page HTML en fonction du template
    function template($page,$titre)
    {
    $this->a->set_file('MODELE',$page);
     
    $this->a->set_var('title',APPLICATION.' : '.$titre);
    $this->a->set_var('Author',AUTHOR);
    $this->a->set_var('Publisher',PUBLISHER);
    $this->a->set_var('Reply-to',REPLY_TO);
    $this->a->set_var('Description',DESCRIPTION);
    $this->a->set_var('Keywords',KEYWORDS);
     
    $this->a->set_var('Indentifier-URL',IDENTIFIER_URL
    );
    $this->a->set_var('Copyright',COPYRIGHT);
    $this->a->set_var('Robots',ROBOTS);
     
    $this->a->set_var('Revisit-after',REVISIT_AFTER);
     
    }
    }
    je dois vraiment pas être doué, car ça me retourne cette erreur :

    Fatal error: Call to a member function set_file() on a non-object in index.php on line 23

    première ligne de la méthode template, donc toutes les suivantes génèreront les mêmes erreurs

    Si vous savez comment faire je suis preneur ^^

    Merci !
    bonne soirée !

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->a = new Affichage();

    et pas

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $a = new Affichage();

    Après j'ai pas bien saisi ce que tu veux faire mais bon...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 43
    Par défaut
    oui merci ça devait surement venir de là ^^

    maintenant j'ai une nouvelle erreur ! faut que je cherche la solution encore ^^

    Warning: file(html/tpl/index.tpl.php) [function.file]: failed to open stream: No such file or directory in E:\Programmes\wamp\www\app86\classes\template.php on line 950

    Warning: implode() [function.implode]: Invalid arguments passed in E:\Programmes\wamp\www\app86\classes\template.php on line 950
    Template Error: loadfile: While loading MODELE, html/tpl/index.tpl.php does not exist or is empty.
    Halted.


    Sachant que les fichiers existent bien ^^

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par miniBob Voir le message
    Sachant que les fichiers existent bien ^^
    Ils existent mais pas à l'endroit ou PHP va les chercher

    Tu as un dossier html dans ton dossier classes ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 43
    Par défaut
    la classe index.php se situe à la racine

    après le template index.tpl.php est dans :

    html/tpl

    et même en mettant le dossier html/tpl dans le dossier classes où se situe template.php ça ne fonctionne pas ^^

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 43
    Par défaut
    bon finalement ça fonctionne bien quand je l'ai uploadé sur un ftp pour le tester : http://ibob.mtxserv.fr/app86/index.html

    par contre je vois pas pourquoi ça ne fonctionne pas en local avec wamp ?
    Quelque chose doit différer entre les deux serveurs au niveau de la config apache ou php mais je vois pas quoi ^^

Discussions similaires

  1. Réponses: 10
    Dernier message: 28/04/2006, 17h36
  2. Stopper l'exécution d'une fonction au bout d'un certain temp
    Par Eagle959 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/03/2006, 19h16
  3. Réponses: 3
    Dernier message: 11/03/2006, 16h35
  4. Pause dans l'exécution d'une fonction
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/06/2005, 08h48
  5. Exécution d'une fonction...
    Par mickeliette dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/11/2004, 17h59

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