代码点火器:如何显示单个验证错误


CodeIgniter: How can I display single validation error?

如果我用这个

<?= validation_errors(); ?>

结果是

Username field is required
Password field is required
<textbox for username>
<textbox for password>

我实际需要的是显示这些错误与其元素内联

例:

<textbox for username> Username field is required
<textbox for password> Password field is required

为了单独显示错误,您应该使用函数form_error('用户名'(。要获取正在检查的字段的值,请使用函数 set_value('用户名'(。

要使这两个功能正常工作,您必须在控制器中为"用户名"字段设置规则。指定适用于该字段的验证规则的位置。

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

这是一个关于表单登录的简单教程

这在用户指南中有介绍:

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

单独显示错误

如果您希望在每个表单字段旁边显示错误消息,而不是 比作为列表,您可以使用form_error()功能。

因此,如果您的字段名称是 username ,您将使用 form_error('username')

重要说明:如果您使用数组作为表单域的名称,则 必须将其作为数组提供给函数。例:

<?php echo form_error('options[size]'); ?>

这是 $this->form_validation->error() 的快捷方式 ,如果您愿意,也可以使用它。

当我搜索这个问题时,我正在寻找一种不同的答案。因此,我想分享我遇到的问题的解决方案,即"如何显示单个验证错误?

解决方案是在每个后续表单验证规则之前运行验证例程。这样,只会报告第一个错误。

        $this->form_validation->set_rules('username', 'Username', 'callback_check_username');
        if ($this->form_validation->run() == TRUE){
            $this->form_validation->set_rules('password', 'Password', 'callback_check_password');
        }