假设我有header.tpl和footer.tpl,介于两者之间的是body.tpl。
假设我想通过检查是否设置了特定会话来限制对body.tpl的访问,比如:
session_start();
if (isset($_SESSION['limited'])) {
//render body.tpl
} else {
//direct somewhere else
}
如果session_start(); if (isset()) {
部分位于header.tpl中,而} else {}
位于footer.tpl文件中,这会起作用吗?
我的计划是在每个页面中包含的页眉和页脚中进行会话检查,这样我就不必在呈现模板的PHP文件中这样做了。
像这样(body.tpl的内容(:
<?php require_once(TEMPLATE_PATH. "/header.tpl"); ?>
//body.tpl contents
<?php require_once(TEMPLATE_PATH. "/footer.tpl"); ?>
body.tpl通过一个PHP文件调用,该文件requires
所有必要的文件并实例化将用于填充tpl文件的所有类。如果我在PHP文件中进行会话检查,它将按预期工作。
您可以在执行请求时从任何PHP代码访问$_SESSION对象。请确保只调用session_start一次。
ps。这种方法会带来代码重复,你会后悔的。
如果使用模板引擎,效果会更好(请尝试http://www.smarty.net/)
你将能够轻松地完成这项任务以及更多任务。你将能够沿着这些路线做一些事情。
假设您想要显示一个页面foo.tpl,并且您有另外两个smarty模板1.header.tpl2英尺.tpl
foo.tpl看起来像这个
{include file="header.tpl"}
{$foo}
{include file="footer.tpl"}
然后在php页面中,执行您想要的任何逻辑,通过将输出加载到变量中
$smarty-assign('foo',$my_content);
$smarty->display( "foo.tpl" );
这将呈现foo.tpl,包括header.tpl和footer.tpl的内容以及$foo