Hallo mensen,

Ik ben bezig met een reserveringssysteem. Goed, dat doet verder niet ter zake.
Wat wel ter zake doet is dat ik een template in een bestand zet, en die via een classe aanvraag (via readfile).
Vervolgens wil ik een aantal replaces doen. Alleen PHP werkt niet mee! Geen idee waarom hij het niet doet, maar alle seraches staan gewoon nog als voorheen als ik gereplaces heb!

Ik vermoed dat mijn string te groot is, en dat de functie str_replace niet meer mee werkt dat.

De classe:
<?php

class layout {

# constructor
public function __construct($config) {
session_start();
}

# make the header
public function getHeader() {
$template = readfile('layout/header.php', true);
// standard
$template = str_replace('{$_basePath}', '', $template);
$template = str_replace('breadCrumbs', $_SESSION['breadcrubms'], $template);
$template = str_replace('{$message}', $this->getMessage, $template);

// menu
$template = str_replace('{$active1}', $this->_getMenuStatus('1'), $template);
$template = str_replace('{$active2}', $this->_getMenuStatus('2'), $template);
$template = str_replace('{$active3}', $this->_getMenuStatus('3'), $template);
$template = str_replace('{$active4}', $this->_getMenuStatus('4'), $template);
$template = str_replace('{$active5}', $this->_getMenuStatus('5'), $template);
$template = str_replace('{$active6}', $this->_getMenuStatus('6'), $template);

// left menu

return $template;
}
}
?>

Kan iemand mij helpen? Alvast bedankt!!

[size=xsmall]Toevoeging op 14/08/2010 14:28:53:[/size]

Wat betreft de replaces voor {$active1} etc: dit is voor mij menu. Tot op heden nog nooit een goede manier gevonden om via een handige functie de class="act" mee te geven aan een active kop. Iemand hier ook meteen een oplossing voor :P ?
Lees PHP.net eens.. Daar zie je dat hij een string returned dus volgens mij doet hij het gewoon goed, anders returned hij false. Voor de rest heb ik weinig of nooit met deze functie gewerkt.. Dus hoe het verder zou moeten weet ik niet.

Bron: [php]file_get_contents[/php]
Oké. Ik vind het ook al zo apart:
- hij kan het bestand in een string plaatsen
- maar str_replace kan/wil er niets in replacen.

Iemand anders die een oplossing heeft? BVD!
Ik weet niet hoe je $layout->getHeader() toepast, maar het return't de verwerkte template.

Je zult dus iets moeten doen als echo $layout->getHeader();
Stomme opmerking misschien, maar er staat $_SESSION['breadcrubms'] (notice cruBMs). nu is dit vast niet je grootste probleem maar ik neem aan dat het $_SESSION['breadcrumbs'] moet zijn, met evt. nog een hoofdletter C?
@ Peter:
Dat is hem. Hoe stom is het ook weer mogelijk he... Omdat ik eerst getfile gebruikte (die automatisch een echo doet), heb ik de hele geretrnde string nooit ge-echo't... Dat is de oplossing voor de lege pagina, bedankt!

Maar voor alsnog replaced de functie niet alles..
Ik denk dat je niet heel handig bezig bent. Je opzet is totaal verkeerd.
Je hebt eigenlijk 3 keuzen:
- Gebruik een template engine
- Maak zelf een template engine met native PHP ( dus ipv {breadcumbs} $this->breadcrumbs )
- Maak een template engine met een eigen taal.

De laatste optie is verreweg de lastigste en als je meer wilt dan alleen wat variabelen vervangen, dus ook herhalingsblokken, condities e.d. heb je meer php/programmeer kennis nodig dan je nu laat zien.

Als je dus zelf iets wil maken, raad ik je de tweede optie aan.

Reageren