Php 表单提交后动态更新Smarty模板
我一直在试验Smarty模板引擎。我已经能够设置Smarty并分配变量,但是我有一个关于按照表单sumbit更新模板的问题。我当前的模板(index.tpl)如下所示:Php 表单提交后动态更新Smarty模板,php,smarty,Php,Smarty,我一直在试验Smarty模板引擎。我已经能够设置Smarty并分配变量,但是我有一个关于按照表单sumbit更新模板的问题。我当前的模板(index.tpl)如下所示: <html> <head> <link rel="stylesheet" type="text/css" href="Styles.css"> <title>Smarty</title> </head> <body>
<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>
精明的
您好,请输入您的姓名:
{if isset($name)}
您好,{$name}
{/if}
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->display('index.tpl')时,实际发生的情况是,在“Hello”消息的顶部,表单的上半部分也会打印出来,因此现在同一页上有两个表单
有没有办法解决这个问题?谢谢。看一看:另外,使用全局变量是一种不好的做法。^表单确实成功提交。问题是$smarty->display()函数导致整个模板再次显示,而我只希望{if}语句中的部分出现。那么为什么要使用$smarty->display()函数呢?我不知道如何只更新{if}语句中的模板部分。