Генератор шаблонов PHP не может получить данные - PullRequest
0 голосов
/ 05 августа 2011

У меня проблема с функцией генератора шаблонов, которая не может извлекать некоторые динамические данные и заменять маркеры в 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 ###

Я что-то где-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...