我正在将站点转换为使用PHPTAL模板,现在我正在使用模板编写所有新页面,同时保留现有页面原样。如何在PHPTAL宏中打印未封闭标签
年长的页面使用一个标准的页眉和页脚,一个典型的页面有这样它的内容而产生的:
printHeader();
//print page content
printFooter();
在PHPTAL新页面将使用相同的标准页眉/页脚所以我移动它们变成宏。我想为新旧页面页眉和页脚使用相同的源HTML。要做到这一点,我想编辑的printHeader()和printFooter()函数来使用模板打印的页眉和页脚宏:
printHeader() {
$source = '<metal:use-macro="macros.xhtml/header" />';
$header = new PHPTAL()
$header->setSource($source);
echo $header->execute();
}
我遇到的问题是,我的头包含开幕<html>
和<body>
标签,它们在页脚中关闭。 PHPTAL抛出异常,因为我的宏是无效的xml:
Not all elements were closed before end of the document. Missing: </tal:block></tal:block></tal:block></body></html></tal:block>
什么是最简单的方法呢?我发现使用结构来包含这些标记为一个字符串的方法,但它似乎马虎:
<tal:block metal:define-macro="header">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<tal:block tal:content="structure string:<html>" />
<head>
head content
</head>
<tal:block tal:content="structure string:<body>" />
header content
有一个更清洁的方式做到这一点?也许某种tal属性会允许它忽略<html>
和<body>
缺失的结束标记?