簡體   English   中英

使用CodeIgniter使表單記住先前提交的值

[英]Make form remember earlier submitted values with CodeIgniter

我有這個與codeigniter的聯系表單,我想要做的是,當提交表單但未通過驗證時,我希望字段包含先前提交的值。

但有一點是:當加載表單時,所有字段都已分配了某個值,因此例如“名稱字段”在字段內顯示“名稱”。 我希望這樣保持這種狀態,除非“名稱”被更改並且表單已提交,在這種情況下它應該具有新值。

所以目前我有這個:

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

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

但我不知道如何使表單記住任何新提交的值。

有人有什么想法?

我建議使用CodeIgniter的set_value方法。

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

如果您要提交到同一個控制器,則可以通過$_POST (或$_GET取決於您選擇的表單方法)獲取以前提交的變量。

// use $_POST['name'] if set, else use 'Name*'
<?= form_input('name', (!empty($_POST['name']) ? $_POST['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);?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM