Php 表单提交后动态更新Smarty模板

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>

我一直在试验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>

精明的

您好,请输入您的姓名:
{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}语句中的模板部分。