php新手,请耐心听我说。
我正在使用一个简单的模板系统,其中我设置一个变量为[%PLACEHOLDER%],然后当我使用与之关联的[%TAG%]时,在模板页面上输出存储在变量中的数据。
我这样做,因为我喜欢把所有的php和html分开,使不同的主题和模板更容易被创建,而不需要用户知道php。
一个简单的例子是:
(object) $tpl = new Tmpl( array( 'file' => 'templates/header.tpl' ) );
$tpl->replace( '[%USER%]', $user);
echo $tpl->output();
现在一切正常。我想做的是将用户会话保存为变量,以便为其分配占位符标记。
我在php页面
中使用以下代码<div id="logedin" class="<?php echo (isset($_SESSION['sess_user_id'])) ? 'show' : 'hide'; ?>">
Welcome, <?php echo $_SESSION["sess_username"] ?>
基本上如果用户已登录,则显示div id 'logedin'。
我用了两种CSS样式。
.show{
display: block;
}
.hide{
display: none;
}
我想做的是保存(isset($_SESSION['sess_user_id'])) ?'show': 'hide';作为一个变量,我可以赋值为占位符。
类似这样的东西(但这显然不起作用,因此我问这个问题)
$sessionclassshow = (isset($_SESSION['sess_user_id'])) ? 'show' : 'hide';
$sessionclasshide = (isset($_SESSION['sess_user_id'])) ? 'hide' : 'show';
然后我将它们分配为占位符,像这样
$tpl->replace( '[%CLASSSHOW%]', $sessionclassshow);
$tpl->replace( '[%CLASSHIDE%]', $sessionclasshide);
所以在我的模板文件的任何地方,我可以显示或隐藏一个div取决于用户是否登录。
<div id="topmenu" class="[%SESSIONHIDE%]"><a href="login.html">Login</a></div>
<div id="welcome" class="[%SESSIONSHOW%]">welcome [%USER%]</div>
因此,如果用户登录隐藏'topmenu'div和显示'welcome'div,反之亦然。
我希望我已经把每件事都解释清楚了,谢谢你的帮助
谢谢李
您可以这样分配它们:
$tpl->replace( '[%CLASSSHOW%]', $sessionclassshow);
$tpl->replace( '[%CLASSHIDE%]', $sessionclasshide);
但是在模板中,当你应该使用%CLASSXXXX%
时,你使用了%SESSIONXXXX%
(就像在它们的声明中一样)。
这个应该可以工作:
<div id="topmenu" class="[%CLASSHIDE%]"><a href="login.html">Login</a></div>
<div id="welcome" class="[%CLASSSHOW%]">welcome [%USER%]</div>