CodeIgniter突出显示表单提交时出错的字段

时间:2011-03-01 16:35:57

标签: php codeigniter

我可以在如何在CodeIgniter中进行表单验证时使用一些指导。我正在使用CodeIgniter的内置表单验证,并且可以正常工作。它通过使用并将其包装在某些HTML / CSS中进行样式化,为每个出错的字段返回单独的错误消息:

<?php echo validation_errors('<p class="error">'); ?>

但我们想要做的是突出显示有错误的字段。 CI将允许您将错误消息放在表单错误所在的位置旁边。但是它要求您对值使用错误消息,如下所示:

<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />

顺便说一下,在非CI语法的CI手册中,这让我很困惑。无论如何,我们还希望在提交表单时保留并返回来自字段的数据。所以我做完了:

$email = array('name' => 'email', 'value' => $em);
      ?><div style="padding:5px;">Email* </div><?php echo form_input($email) . '<br/>';

$ em从控制器返回如下:

$data['em'] = $this->input->post('email');

所以我的问题是,我如何完成上述所有内容?显然,CI建议和我所做的事情相互冲突。但我不知道怎么做,所以我可以帮忙。

编辑:进一步挖掘后,我发现你可以通过这样做把错误信息放在字段旁边:

<?php echo form_error('email'); ?>

但是我没有收到任何关于错误的消息,即使我已经写了规则并且上面第一行代码出错了。

3 个答案:

答案 0 :(得分:3)

表单错误($ field)返回一个空字符串''以便更好地使用:

<input type="text" name="email" <?php if (form_error($email) !=='') { echo 'class="error"'; } ?> value="<?php echo set_value('email'); ?>" size="50" />

测试。

答案 1 :(得分:2)

为了单独显示错误,您应该使用函数form_error('email')。并且为了获得正在检查的字段的值,请使用函数set_value('email')。要使这两个功能起作用,您必须在控制器中为“电子邮件”字段设置规则。如果您指定验证规则适用于该字段。

<?php echo form_error('email'); ?>
<input type="text" name="username" value="<?php echo set_value('email'); ?>" size="50" />

来源:http://codeigniter.com/user_guide/libraries/form_validation.html#individualerrors

答案 2 :(得分:1)

未经测试,但如果出现错误,form_error($field)应返回true:

所以也许:

<input type="text" name="email" <?php if (form_error($email)) { echo 'class="error"'; } ?> value="<?php echo set_value('email'); ?>" size="50" />

未经测试。值得一试?

也许还考虑使用JQuery或类似方法来验证和设置表单字段的样式,并使用CI作为后备(显然用于演示目的)。

通过这种方式,您的表单验证可以按照您的要求设置样式,而不受99%验证规则的CI限制,然后是其他任何内容,默认CI方式可以启动。