[英]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.