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