Php 使用CodeIgniter使表单记住以前提交的值

Php 使用CodeIgniter使表单记住以前提交的值,php,forms,codeigniter,Php,Forms,Codeigniter,我有这个带有codeigniter的联系表单,我想做的是,当表单提交但未通过验证时,我希望字段包含先前提交的值 但是有一件事:当表单被加载时,所有的字段都已经指定了一个特定的值,例如“name”字段在字段中显示“name”。我希望保持这种状态,除非“名称”被更改并且表单被提交,在这种情况下,表单应该有新的值 所以现在我有这个: <?php echo form_input('name', 'Name*');?> <?php echo form_input('email', 'E

我有这个带有codeigniter的联系表单,我想做的是,当表单提交但未通过验证时,我希望字段包含先前提交的值

但是有一件事:当表单被加载时,所有的字段都已经指定了一个特定的值,例如“name”字段在字段中显示“name”。我希望保持这种状态,除非“名称”被更改并且表单被提交,在这种情况下,表单应该有新的值

所以现在我有这个:

<?php echo form_input('name', 'Name*');?>

<?php echo form_input('email', 'Email*');?>

但我不知道如何让表单记住任何新提交的值


有人知道吗?

如果您提交给同一个控制器,您可以通过
$\u POST
(或
$\u get
获取之前提交的变量,具体取决于您选择的表单方法)

//如果设置,则使用$\u POST['name'],否则使用'name*'

我建议使用CodeIgniter的方法


我认为答案在于控制器

就我个人而言,我开始让forms controller函数处理验证:

<?php

class Page extends Controller
{

    ...

    function showform()
    {
      $this->load->helper(array('form', 'url'));
      $data = array("name" => "Name*", "email" => "Email*");
      $failure = false;

      if( $this->input->post("name") )
      {
        $data["name"] = $this->input->post("name");
        $data["email"] = $this->input->post("email");

        if( !valid_email($data["email"]) )
        {
            $failure = true;
            $data["error_message"] = "E-mail couldn't validate";
        }

        if( !$failure )
             redirect('/page/thankyou/', 'refresh');
      }



        $this->load->vars($data);
        $this->load->view("theform");   

    }

    ...

}

您在此处重建的功能在框架中提供。。。表单验证类提供了功能,因此您不必手动执行此操作。好吧,如果OP想要使用表单验证类,他是最受欢迎的-我个人不喜欢那个特定的库,因此我提出了建议。谢谢,我在表单帮助器页面上没有注意到这一点,但这正是我想要的!
<?php echo form_input('name', set_value('name', 'Name*')); ?>
<?php

class Page extends Controller
{

    ...

    function showform()
    {
      $this->load->helper(array('form', 'url'));
      $data = array("name" => "Name*", "email" => "Email*");
      $failure = false;

      if( $this->input->post("name") )
      {
        $data["name"] = $this->input->post("name");
        $data["email"] = $this->input->post("email");

        if( !valid_email($data["email"]) )
        {
            $failure = true;
            $data["error_message"] = "E-mail couldn't validate";
        }

        if( !$failure )
             redirect('/page/thankyou/', 'refresh');
      }



        $this->load->vars($data);
        $this->load->view("theform");   

    }

    ...

}
<?php echo form_input('name', $name);?>
<?php echo form_input('email', $email);?>