我有这个与codeigniter的联系表格,我想要做的是,当提交表单但未通过验证时,我希望这些字段包含先前提交的值。
但有一点是:当加载表单时,所有字段都已分配了某个值,因此例如“名称字段”在字段内显示“名称”。我希望这样保持这种状态,除非“名称”被更改并且表单已提交,在这种情况下它应该具有新值。
所以目前我有这个:
<?php echo form_input('name', 'Name*');?>
<?php echo form_input('email', 'Email*');?>
但我不知道如何让表格记住任何新的提交值。
有人有任何想法吗?
答案 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);?>