php模板生成器无法获取数据

时间:2011-08-05 09:44:36

标签: php html class templates

我遇到了一个模板生成器函数的问题,该函数无法获取某些动态数据并用数据替换HTML中的标记。

我在Main类中创建了一个函数,用于设置我定义的标记

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函数中。

这些标记将用于我的TemplateGenerator函数

读取的HTML模板中
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");
        }
    }
}

当我在GetMarkers()中执行print_r($markers)时,我可以正确地看到来自$markersRoom["###ROOMS###"]的所有数据,但是当我在TemplateGenerator中执行此操作时,数据会丢失。

在我的index.php中使用

在开关($ page)内调用TemplateGenerator
$main->TemplateGenerator("templates/rooms.html");

其中rooms.html包含标记### ROOOMS ###

它正确读取HTML文件,但没有任何来自GetMarkers的数据放入其中,因此只输出### ROOMS ###

我错过了什么地方吗?

0 个答案:

没有答案