У меня проблема с функцией генератора шаблонов, которая не может извлекать некоторые динамические данные и заменять маркеры в HTML данными.
Я создал функцию в своем главном классе, которая устанавливает маркеры, которые я определяю
function GetMarkers($markers = array()) {
foreach($markers as $key => $value) {
$this->markers[strtoupper($key)] = $value;
}
return $this->markers;
}
Я определяю некоторые маркеры в class.rooms.php
$markersRoom = array();
$markersRoom["###ROOMS###"] = '<a href="#" onclick="return showRBox();" class="boxOpener">'. $rTxt .'</a>';
$markersRoom["###ROOMS###"] .= '<div class="roomBox">';
$markersRoom["###ROOMS###"] .= '<ul class="roomItems">';
while($row = mysql_fetch_array($sql)) {
$markersRoom["###ROOMS###"] .= '<li>';
$markersRoom["###ROOMS###"] .= '<p><a href="index.php?page=sr&room='. $row["room"] .'&floor='. $_GET["floor"] .'&wall='. $_GET["wall"] .'&envi='. $_GET["envi"] .'&fpanel='. $_GET["fpanel"] .'">'. $row["descr"] .'</a></p>';
$markersRoom["###ROOMS###"] .= '</li>';
}
$markersRoom["###ROOMS###"] .= '</ul>';
$markersRoom["###ROOMS###"] .= '</div>';
Main::GetMarkers($markersRoom);
}
и помещаю их в функцию GetMarkers.
Эти маркеры должны использоваться вШаблон HTML, который читается моей функцией TemplateGenerator
function TemplateGenerator($template) {
/* Get content from the html template */
$data = file_get_contents($template);
if(isset($this->markers)) {
/**************************************************
* Match each key in $this->markers array
* and replace with the correct value
***************************************************/
foreach($this->$markers as $key => $value) {
if(preg_match("/". preg_quote($key) ."/", $data, $matches)) {
$data = str_replace($key, $value, $data);
} else {
$data = $data;
}
}
Main::TxtOutput($data);
} else {
if(!empty($data)) {
echo $data;
} else {
die("An error occured");
}
}
}
Когда я выполняю print_r($markers)
внутри GetMarkers (), я вижу все данные из $markersRoom["###ROOMS###"]
правильно, но когда я делаю это внутри TemplateGenerator, данныепотерял.
TemplateGenerator вызывается в моем index.php внутри коммутатора ($ page) с помощью
$main->TemplateGenerator("templates/rooms.html");
, где rooms.html содержит маркер ### ROOOMS ###
Он правильно читает файл HTML, но в нем нет данных от GetMarkers, поэтому он просто выводит ### ROOMS ###
Я что-то где-то упустил?