3

想象一下这样的表格:

<form action="test.php" method="post">
    <input type="text" name="firstname" value="<?=set_value('firstname')?>" />
    <input type="text" name="lastname" value="<?=set_value('lastname')?>" />
    <input type="text" name="email" value="<?=set_value('email')?>" />
    <input type="submit" name="submit_form" value="OK" />
</form>

如果我提交了不正确的电子邮件,CodeIgniter 函数将写入“该字段无效”并用错误的值填充无效字段。

我想保留错误消息但不保留错误的值(我更喜欢有一个空值)。但我也想保留重新填充函数以获得正确的值。

这是我得到的:

http://nsa21.casimages.com/img/2011/12/29//111229060041170572.jpg

这是我想要的:

在此处输入图像描述

[编辑] 找到解决方案(感谢 Herr Kaleun 和 Matt Moore)

电子邮件字段示例:

<input type="text" name="email" id="email" value="<?=!form_error('email')?set_value('email'):''?>" />
4

2 回答 2

2

您可以单独检查字段并具有这样的逻辑。

如果存在特定字段的错误,您可以在此基础上构建逻辑。

if ( form_error('email') != '' )
{
    $data['email_value'] = '';
}
else
{
    $data['email_value'] = set_value('email');
}

<form action="test.php" method="post">
    <input type="text" name="firstname" value="<?=set_value('firstname')?>" />
    <input type="text" name="lastname" value="<?=set_value('lastname')?>" />
    <input type="text" name="email" value="<?= $email_value; ?>" />
    <input type="submit" name="submit_form" value="OK" />
</form>
于 2011-12-29T17:25:47.237 回答
1

当基于验证的表单值出错时设置 Form_error。从您对 set_value 函数的使用来看,我假设您正在使用内置的表单验证。您可以检查是否已设置该字段的消息并根据该消息if(form_error('fieldname') !=NULL)设置值。

您可能必须为每个字段设置错误消息,无论如何您都应该这样做。这是涵盖它的指南: http: //codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform

<form action="test.php" method="post"> 
    <input type="text" name="firstname" value="<?if(form_error('firstname') != NULL){echo set_value('firstname');}?>" /> 
    <input type="text" name="lastname" value="<?if(form_error('lastname') != NULL){ echo set_value('lastname');}?>" /> 
    <input type="text" name="email" value="<?if(form_error('email') !=NULL){ echo set_value('email');}?>" /> 
    <input type="submit" name="submit_form" value="OK" /> 
</form> 

*注意此代码未经测试 *

于 2011-12-29T18:31:19.233 回答