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

时间:2010-10-26 01:20:19

标签: php forms codeigniter

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

但有一点是:当加载表单时,所有字段都已分配了某个值,因此例如“名称字段”在字段内显示“名称”。我希望这样保持这种状态,除非“名称”被更改并且表单已提交,在这种情况下它应该具有新值。

所以目前我有这个:

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

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

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

有人有任何想法吗?

3 个答案:

答案 0 :(得分:5)

我建议使用CodeIgniter的set_value方法。

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

答案 1 :(得分:0)

如果您要提交到同一个控制器,则可以通过$_POST(或$_GET取决于您选择的表单方式)获取以前提交的变量。

// use $_POST['name'] if set, else use 'Name*'
<?= form_input('name', (!empty($_POST['name']) ? $_POST['name'] : 'Name*'); ?>

答案 2 :(得分:0)

我认为答案在于控制器。

就个人而言,我开始让表单控制器函数处理验证:

<?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);?>