CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Exécution d'une fonction

rebelk
rebelk
Niveau 5
31 mai 2010 à 20:32:42

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 pas de mon site de cette façon :

// 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 :

// 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 !

bonne soirée !

deepblue
deepblue
Niveau 16
31 mai 2010 à 20:40:20

Met $a en propriété de ton objet (en protected) tu tu fais ton "new Affichage()" dans le constructeur de ton objet. Dans tes méthodes : $this-a->set_var(....)

deepblue
deepblue
Niveau 16
31 mai 2010 à 20:44:43

$this->a->set_var(...) *

rebelk
rebelk
Niveau 5
31 mai 2010 à 22:53:27

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 :x

deepblue
deepblue
Niveau 16
01 juin 2010 à 04:05:19

class Index
{
protected $a;

function Index() {
$this->a = new Affichage();
}

// Méthode qui affiche la page d'accueil du site
function afficherAccueil()
{
$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);

}
}

$index = new Idex();
$index->afficherAccueil();

rebelk
rebelk
Niveau 5
01 juin 2010 à 12:45:06

oui merci deepblue j'avais trouvé la solution entre temps mais je n'avais plus le net ^^ c'était une erreur de merde :D

J'ai cette erreur qui se produit désormais en local en utilisant wamp, mais ça fonctionne parfaitement sur mon ftp net :

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."

ça vient surement d'une mauvaise configuration d'apache ou du php sur wamp mais je vois pas d'où :(

deepblue
deepblue
Niveau 16
01 juin 2010 à 14:46:38

En fait, faut apprendre à lire les messages d'erreurs ^^'
"No such file or directory" -> php veut faire joujou avec un fichier auquel il n'a pas accès (html/tpl/index.tpl.php), d'ailleurs ton moteur de template te ponds aussi un message qui dit la même chose "html/tpl/index.tpl.php does not exist or is empty. Halted.""

Pour le non affichage du message d'erreur chez ton hébergeur, c'est juste une option passé à php pour masquer les warnings.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment