我一直在试验Smarty模板引擎。我已经能够设置Smarty并分配变量,但是我有一个关于在表单sumbit之后更新模板的问题。我当前的模板(index.tpl)如下:
<html>
<head>
<link rel="stylesheet" type="text/css" href="Styles.css">
<title>Smarty</title>
</head>
<body>
<div class="body">
<form action='index.php' method='post'>
<br>
<center>Hello, please enter your name: <input type=text name=name class=nameTextField></center>
<br>
<center><input type=submit value="Submit Name" name=submitName class=nameButton></center>
</form>
<center>
<div class="nameDisplay">
{if isset($name)}
<h1>Hello, {$name}</h1>
{/if}
</div>
</center>
</div>
</body>
</html>
PHP文件(index.php)在表单提交期间运行以下代码:
<?php
if(isset($_POST['submitName'])){
global $smarty; // previously declared
$name = $_POST['name'];
$smarty->assign('name', $name);
$smarty->display('index.tpl');
}
?>
这个想法是模板中的“Hello”消息仅在提交表单后出现,因为在此之前,$ name Smarty变量未设置。
但是,运行$ smarty-&gt; display('index.tpl')时实际发生的情况是,在“Hello”消息之上,表单的上半部分也会打印出来,所以现在有了同一页面上的两个表格。
有什么想法可以解决这个问题吗?谢谢。