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);
[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 ?
Tussen enkele quotes betekent dus dat php dat letterlijk over neemt.
Dus
$_basePath = 'aap';
str_replace('{$_basePath}', '', ... zoek naar de string '{$_basePath}'
str_replace("{$_basePath}", '', ... zoek naar de string '{aap}'
Smarty gebruik ik met opzet niet, ik kies deze keer om het eens zelf te maken..
Wat betreft de quotes:
$template = str_replace('breadCrumbs', $_SESSION['breadcrubms'], $template);
werkt ook niet... Terwijl breadCrumbs toch echt letterlijk in die template staat.. Hoe is dat te verklaren?
# class declarations
$config = new config;
//$user = new user;
//$db = new PDO("$config->_dbType:host=$config->_dbHost;dbname=$config->_dbData", $config->_dbUser, $config->_dbPass);
//$login = new login;
$layout = new layout($config);
#include header
$layout->getHeader();
#make content
//
#include footer
$layout->getFooter();
#quit connection
$db = NULL;
?>
classes/layout.php
<?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);
[size=xsmall]Toevoeging op 14/08/2010 14:54:27:[/size]
(onderaan de HTML zie je de breadCrumbs staan)
Bij mij werkt geen ENKELE replace... Ik vraag me nu ook af of readfile het wel als een sting opslaat, of in ieder geval als een string die str_replace wil eten..