Verzeichnis suchen
Array Array Helper Benchmarking Benchmarking Class Caching Caching Driver Calendaring Calendaring Class CAPTCHA CAPTCHA Helper Config Config Class Cookie Cookie Helper Database Connecting to your Database Custom Function Calls Database Caching Class Database Configuration Database Forge Class Database Metadata Database Quick Start: Example Code Database Reference Database Utility Class DB Driver Reference Generating Query Results Queries Query Builder Class Query Helper Methods Transactions Date Date Helper Directory Directory Helper Download Download Helper Email Email Class Email Helper Encrypt Encrypt Class Encryption Encryption Library File File Helper File Uploading File Uploading Class Form Form Helper Form Validation Form Validation FTP FTP Class Functions compatibility_functions common_functions HTML HTML Helper HTML Table HTML Table Class Image Manipulation Image Manipulation Class Inflector Inflector Helper Input Input Class Javascript Javascript Class Language Language Class Language Helper Loader Loader Class Migrations Migrations Class Number Number Helper Output Output Class Pagination Pagination Class Path Path Helper Security Security Class Security Helper Session Session Library Shopping Cart Shopping Cart Class Smiley Smiley Helper String String Helper Template Parser Template Parser Class Text Text Helper Trackback Trackback Class Typography Typography Class Typography Helper Unit Testing Unit Testing Class URI URL User Agent XML XML-RPC and XML-RPC Server Zip Encoding Zip Encoding Class XML-RPC and XML-RPC Server Classes XML Helper User Agent Class URL Helper URI Class
Figuren

CodeIgniter提供了一个全面的表单验证和数据准备类,有助于最小化您编写的代码量。

页面内容

  • 表单验证

    • 表格

    • 成功页面

    • 控制器

    • 尝试一下!

    • 说明

    • 设置验证规则

    • 使用数组设置规则

    • 级联规则

    • 准备数据

    • 重新填写表单

    • 回调:您自己的验证方法

    • 可调用:通常使用任何东西

    • 设置错误消息

    • 翻译字段名称

    • 更改错误分隔符

    • 单独显示错误

    • 验证数组(非$ _POST)

    • 概观

    • 表单验证教程

-  [Saving Sets of Validation Rules to a Config File](about:blank#saving-sets-of-validation-rules-to-a-config-file)    - [How to save your rules](about:blank#how-to-save-your-rules)    - [Creating Sets of Rules](about:blank#creating-sets-of-rules)    - [Calling a Specific Rule Group](about:blank#calling-a-specific-rule-group)    - [Associating a Controller Method with a Rule Group](about:blank#associating-a-controller-method-with-a-rule-group)
- [Using Arrays as Field Names](about:blank#using-arrays-as-field-names)- [Rule Reference](about:blank#rule-reference)- [Prepping Reference](about:blank#prepping-reference)- [Class Reference](about:blank#class-reference)- [Helper Reference](about:blank#helper-reference)

概观

在解释CodeIgniter的数据验证方法之前,先介绍一下理想的情况:

  1. 将显示一个表单。

  2. 您填写并提交。

  3. 如果您提交的内容无效,或者可能错过了必填项目,则会重新显示包含您的数据的表单以及描述问题的错误消息。

  4. 此过程将继续,直到您提交了有效的表单。

在接收端,脚本必须:

  1. 检查所需的数据。

  2. 验证数据的类型是否正确,并且符合正确的标准。例如,如果提交用户名,则必须验证它是否仅包含允许的字符。它必须是最小长度,并且不能超过最大长度。用户名不能是别人现有的用户名,或者甚至可能是保留字。等等。

  3. 清理数据的安全性。

  4. 如果需要,预格式化数据(数据是否需要修剪?HTML编码等)

  5. 准备数据以便在数据库中插入。

虽然上述过程没有什么特别复杂,但它通常需要大量的代码,并且要显示错误消息,各种控制结构通常放在HTML表单中。表单验证尽管很容易创建,但实现起来通常非常繁琐和繁琐。

表单验证教程

以下是实施CodeIgniters表单验证的“实践”教程。

为了实现表单验证,你需要三件事情:

  1. 包含表单的视图文件。

  2. 包含成功提交后将显示“成功”消息的视图文件。

  3. 接收和处理提交的数据的控制器方法。

让我们创建这三件事,以会员注册表单为例。

表格

使用文本编辑器创建一个名为myform.php的表单。在其中,放置此代码并将其保存到您的应用程序/视图/文件夹中:

<html><head><title>My Form</title></head><body><?php echo validation_errors(); ?><?php echo form_open('form'); ?><h5>Username</h5><input type="text" name="username" value="" size="50" /><h5>Password</h5><input type="text" name="password" value="" size="50" /><h5>Password Confirm</h5><input type="text" name="passconf" value="" size="50" /><h5>Email Address</h5><input type="text" name="email" value="" size="50" /><div><input type="submit" value="Submit" /></div></form></body></html>

成功页面

使用文本编辑器创建一个名为formsuccess.php的表单。在其中,放置此代码并将其保存到您的应用程序/视图/文件夹中:

<html><head><title>My Form</title></head><body><h3>Your form was successfully submitted!</h3><p><?php echo anchor('form', 'Try it again!'); ?></p></body></html>

控制器

使用文本编辑器创建一个名为Form.php的控制器。在它中,放置这些代码并将其保存到您的应用程序/控制器/文件夹中:

<?phpclass Form extends CI_Controller {        public function index()        {
                $this->load->helper(array('form', 'url'));

                $this->load->library('form_validation');                if ($this->form_validation->run() == FALSE)                {
                        $this->load->view('myform');                }                else                {
                        $this->load->view('formsuccess');                }        }}

尝试一下!

要尝试表单,请使用类似下面的网址访问您的网站:

example.com/index.php/form/

如果您提交表单,则只需查看表单重新加载。那是因为你还没有设置任何验证规则。

既然你还没有告诉Form Validation类来验证任何东西,它默认返回FALSE(boolean false)。The run()方法只会返回TRUE,如果它已成功应用您的规则,而没有任何失败。

说明

你会注意到关于上述页面的几件事情:

表单(myform.php)是一个标准的Web表单,除了两个例外:

  1. 它使用表单助手来创建表单打开。从技术上讲,这是没有必要的。您可以使用标准HTML创建表单。但是,使用助手的好处是它会根据配置文件中的URL为您生成操作URL。这使您的应用程序在您的URL更改时更具可移植性。

  2. 在窗体的顶部,您会注意到以下函数调用:<?php echo validation \ _errors(); ?>该函数将返回验证器发回的任何错误消息。如果没有消息,它将返回一个空字符串。

控制器(Form.php)有一个方法:index()。此方法初始化验证类并加载视图文件使用的表单助手和URL助手。它也运行验证程序。根据验证是否成功,它会显示表单或成功页面。

设置验证规则

CodeIgniter允许您为给定字段设置尽可能多的验证规则,将它们按顺序级联,甚至可以让您同时准备和预处理字段数据。要设置验证规则,您将使用以下set_rules()方法:

$this->form_validation->set_rules();

上述方法以三个参数作为输入:

  1. 字段名称 - 您给出表单字段的确切名称。

  2. 该字段的“人类”名称,将插入错误消息中。例如,如果您的字段被命名为“用户”,则可以给它一个人名“用户名”。

  3. 此表单字段的验证规则。

  4. (可选)根据当前字段的任何规则设置自定义错误消息。如果没有提供将使用默认的。

注意

如果您希望将字段名称存储在语言文件中,请参阅翻译字段名称。

这是一个例子。在你的控制器(Form.php)中,在验证初始化方法的下面添加下面的代码:

$this->form_validation->set_rules('username', 'Username', 'required');$this->form_validation->set_rules('password', 'Password', 'required');$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');$this->form_validation->set_rules('email', 'Email', 'required');

你的控制器应该看起来像这样:

<?phpclass Form extends CI_Controller {        public function index()        {
                $this->load->helper(array('form', 'url'));

                $this->load->library('form_validation');

                $this->form_validation->set_rules('username', 'Username', 'required');
                $this->form_validation->set_rules('password', 'Password', 'required',                        array('required' => 'You must provide a %s.')                );
                $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
                $this->form_validation->set_rules('email', 'Email', 'required');                if ($this->form_validation->run() == FALSE)                {
                        $this->load->view('myform');                }                else                {
                        $this->load->view('formsuccess');                }        }}

现在提交表单的空白字段,你应该看到错误信息。如果您填写填写了所有字段的表单,您将看到您的成功页面。

注意

出现错误时,表单字段尚未用数据重新填充。我们很快会做到。

使用数组设置规则

在继续之前,应该注意的是,如果您希望在一个操作中设置所有规则,则可以将规则设置方法传递给数组。如果您使用此方法,则必须按照指示命名您的数组键:

$config = array(        
                array(                
                        'field' => 'username',                
                        'label' => 'Username',                
                        'rules' => 'required'        
                        ),        
                array(                
                        'field' => 'password',                
                        'label' => 'Password',                
                        'rules' => 'required',                
                        'errors' => array(                        
                                    'required' => 'You must provide a %s.',                
                                    ),        
                      ),        
                array(                
                        'field' => 'passconf',                
                        'label' => 'Password Confirmation',                
                        'rules' => 'required'        
                    ),        
                array(                
                        'field' => 'email',                
                        'label' => 'Email',                
                        'rules' => 'required'        
                    )
                );
$this->form_validation->set_rules($config);

级联规则

CodeIgniter允许你将多个规则放在一起。我们来试试吧。在规则设置方法的第三个参数中更改您的规则,如下所示:

$this->form_validation->set_rules('username', 'Username','required|min_length[5]|max_length[12]|is_unique[users.username]',array(                
    'required'      => 'You have not provided %s.',                
    'is_unique'     => 'This %s already exists.'        
    )
);
$this->form_validation->set_rules('password', 'Password', 'required');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');

上面的代码设置了以下规则:

  1. 用户名字段不能少于5个字符,也不能超过12个。

  2. 密码字段必须与密码确认字段匹配。

  3. 电子邮件字段必须包含有效的电子邮件地址。

试一试!提交表单时没有正确的数据,您会看到与新规则相对应的新错误消息。有许多规则可供您在验证参考中阅读。

注意

您也可以传递一组规则来set_rules()代替字符串。例:

$this->form_validation->set_rules('username', 'Username', array('required', 'min_length[5]'));

准备数据

除了上面我们使用的验证方法之外,您还可以用各种方式准备数据。例如,你可以设置这样的规则:

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[8]');
$this->form_validation->set_rules('passconf', 'Password Confirmation', 'trim|required|matches[password]');
$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');

在上面的例子中,我们正在“修剪”这些字段,在必要时检查长度并确保两个密码字段匹配。

接受一个参数的任何天然PHP功能可以作为一条规则,等htmlspecialchars()trim()等。

注意

您通常会在验证规则之后使用准备功能因此如果出现错误,原始数据将显示在表单中。

重新填写表单

到目前为止,我们只处理错误。现在是用提交的数据重新填充表单字段的时候了。CodeIgniter提供了几个帮助函数,允许你这样做。你最常用的一个是:

set_value('field name')

打开myform.php视图文件和更新中使用的每个字段set_value()的功能:

不要忘记在php:func:set\_value()函数调用中包含每个字段名称!

<html><head><title>My Form</title></head><body><?php echo validation_errors(); ?><?php echo form_open('form'); ?><h5>Username</h5><input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" /><h5>Password</h5><input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" /><h5>Password Confirm</h5><input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" /><h5>Email Address</h5><input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" /><div><input type="submit" value="Submit" /></div></form></body></html>

现在重新加载页面并提交表单,以便触发错误。您的表单字段现在应该重新填充

注意

下面的类参考部分包含允许您重新填充<select>菜单,单选按钮和复选框的方法。

重要

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

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

欲了解更多信息,请参阅下面的使用数组作为字段名称部分。

回调:您自己的验证方法

验证系统支持回调你自己的验证方法。这允许您扩展验证类以满足您的需求。例如,如果您需要运行数据库查询来查看用户是否选择了唯一的用户名,则可以创建一个回调方法来实现此目的。我们来创建一个这样的例子。

在您的控制器中,将“用户名”规则更改为:

$this->form_validation->set_rules('username', 'Username', 'callback_username_check');

然后添加一个称为username_check()您的控制器的新方法。以下是您的控制器现在的外观:

<?phpclass Form extends CI_Controller {        public function index()        {
                $this->load->helper(array('form', 'url'));

                $this->load->library('form_validation');

                $this->form_validation->set_rules('username', 'Username', 'callback_username_check');
                $this->form_validation->set_rules('password', 'Password', 'required');
                $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
                $this->form_validation->set_rules('email', 'Email', 'required|is_unique[users.email]');                if ($this->form_validation->run() == FALSE)                {
                        $this->load->view('myform');                }                else                {
                        $this->load->view('formsuccess');                }        }        public function username_check($str)        {                if ($str == 'test')                {
                        $this->form_validation->set_message('username_check', 'The {field} field can not be the word "test"');                        return FALSE;                }                else                {                        return TRUE;                }        }}

重新载入您的表格并将其用“test”作为用户名提交。您可以看到表单字段数据已传递给您的回调方法供您处理。

要调用回调,只需将方法名称放在规则中,并将“callback_”作为规则前缀。如果你需要在你的回调方法中接收一个额外的参数,只需要在方括号之后的方括号后面添加它,如:callback_foo[bar],然后它将作为回调方法的第二个参数传递。

注意

您也可以处理传递给您的回调的表单数据并将其返回。如果您的回调函数返回布尔值TRUE / FALSE以外的任何值,则假定该数据是您新处理的表单数据。

可调用:通常使用任何东西

如果回调规则对您来说不够好(例如,因为它们仅限于您的控制器),请不要感到失望,还有一种方法可以创建自定义规则:任何is_callable()会返回TRUE的规则。

考虑下面的例子:

$this->form_validation->set_rules(        
'username', 'Username',        
array(                
'required',                
array($this->users_model, 'valid_username')        
));

上面的代码将使用valid_username()你的Users_model对象的方法。

这仅仅是一个例子,回调不限于模型。您可以使用接受该字段值作为其第一个参数的任何对象/方法。你也可以使用匿名函数:

$this->form_validation->set_rules(        
'username', 'Username',        
array(                
'required',                
function($value)                {                        // Check $value                }        ));

当然,由于Callable规则本身不是一个字符串,它也不是规则名称。当你想为它们设置错误信息时,这是一个问题。为了解决这个问题,可以将这样的规则放在数组的第二个元素中,第一个元素是规则名称:

$this->form_validation->set_rules(        
'username', 'Username',        
array(                
'required',                
array('username_callable', array($this->users_model, 'valid_username'))        
));

匿名功能版本:

$this->form_validation->set_rules(        
'username', 'Username',        
array(                
'required',                
array(                        
    'username_callable',function($str){                               
     // Check validity of $str and return TRUE or FALSE                        
    }                
)        
));

设置错误消息

所有本地错误消息都位于以下语言文件中:system / language / english / form_validation_lang.php

要为规则设置自己的全局自定义消息,您可以通过在应用程序/ language / english / form_validation_lang.php中创建自己的语言来扩展/覆盖语言文件(在Language Class文档中阅读更多内容),或者使用以下方法:

$this->form_validation->set_message('rule', 'Error Message');

如果您需要为特定规则的特定字段设置自定义错误消息,请使用set_rules()方法:

$this->form_validation->set_rules('field_name', 'Field Label', 'rule1|rule2|rule3',        array('rule2' => 'Error Message on rule2 for this field_name'));

其中规则对应于特定规则的名称,错误消息是您希望显示的文本。

如果您想要包含字段的“人名”名称或某些规则允许的可选参数(例如max_length),则可以分别将{field}{param}标记添加到您的消息中:

$this->form_validation->set_message('min_length', '{field} must have at least {param} characters.');

在具有人名用户名和min_length5规则的字段中,将显示错误:“用户名必须至少包含5个字符。”

注意

在错误消息sprintf()中使用%s的旧方法仍然有效,但它会覆盖上面的标记。你应该使用一个或另一个。

在上面的回调规则示例中,通过传递方法的名称(不带“callback_”前缀)来设置错误消息:

$this->form_validation->set_message('username_check')

翻译字段名称

如果您想将传递给该set_rules()方法的“人”名称存储在语言文件中,并因此使该名称能够被翻译,请执行以下操作:

首先,用lang:作为你的“人类”名称的前缀,如下例所示:

$this->form_validation->set_rules('first_name', 'lang:first_name', 'required');

然后,将名称存储在您的一个语言文件数组中(不带前缀):

$lang['first_name'] = 'First Name';

注意

如果您将数组项存储在未由CI自动加载的语言文件中,则需要记住使用以下命令将其加载到控制器中:

$this->lang->load('file_name');

有关语言文件的更多信息,请参见“语言课程”页面。

更改错误分隔符

默认情况下,Form Validation类会在每个显示的错误消息的周围添加一个段落标记(<p>)。您可以全局更改这些分隔符,也可以单独更改这些分隔符或更改配置文件中的默认值。

  1. 全局更改分隔符要在全局更改错误分隔符,在您的控制器方法中,在加载Form Validation类之后,添加以下代码:$ this-> form_validation-> set_error_delimiters('<div class =“error”>','</ div >'); 在这个例子中,我们切换到使用div标签。

  2. 单独更改分隔符本教程中显示的两个错误生成函数中的每一个都可以提供它们自己的分隔符,如下所示:<?php echo form \ _error('field name','<div class =“error”>','</ DIV>'); ?>或者:<?php echo validation \ _errors('<div class =“error”>','</ div>'); ?>

  3. 在配置文件中设置分隔符您可以在application / config / form_validation.php中添加错误分隔符,如下所示:$ config'error_prefix'='<div class =“error \ _prefix”>'; $ config'error_suffix'='</ div>';

单独显示错误

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

尝试一下!更改您的表单,使其看起来像这样:

<h5>Username</h5><?php echo form_error('username'); ?><input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" /><h5>Password</h5><?php echo form_error('password'); ?><input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" /><h5>Password Confirm</h5><?php echo form_error('passconf'); ?><input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" /><h5>Email Address</h5><?php echo form_error('email'); ?><input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />

如果没有错误,则不会显示任何内容。如果出现错误,则会显示消息。

重要

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

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

欲了解更多信息,请参阅下面的使用数组作为字段名称部分。

验证数组(非$ _POST)

有时您可能想要验证不是源自$_POST数据的数组。

在这种情况下,您可以指定要验证的数组:

$data = array(        'username' => 'johndoe',        'password' => 'mypassword',        'passconf' => 'mypassword');$this->form_validation->set_data($data);

无论您是验证$_POST数据还是选择其他阵列,创建验证规则,运行验证和检索错误消息的工作方式都是相同的。

重要

您必须定义任何验证规则之前调用该set_data()方法。

重要

如果你想在单个执行过程中验证多个数组,那么你应该reset_validation()在设置规则和验证新数组之前调用该方法。

欲了解更多信息,请参阅下面的类参考部分。

将一组验证规则保存到配置文件

Form Validation类的一个很好的特性是它允许你将你的整个应用程序的所有验证规则存储在配置文件中。您可以将这些规则组织到“组”中。这些组可以在调用匹配的控制器/方法时自动加载,也可以根据需要手动调用每个组。

如何保存你的规则

要存储您的验证规则,只需在application / config /文件夹中创建一个名为form_validation.php的文件即可。在那个文件中,你将放置一个名为$ config的数组和你的规则。如前所示,验证数组将具有此原型:

$config = array(        array(                'field' => 'username',                'label' => 'Username',                'rules' => 'required'        ),        array(                'field' => 'password',                'label' => 'Password',                'rules' => 'required'        ),        array(                'field' => 'passconf',                'label' => 'Password Confirmation',                'rules' => 'required'        ),        array(                'field' => 'email',                'label' => 'Email',                'rules' => 'required'        ));

您的验证规则文件将自动加载并在您调用该run()方法时使用。

请注意,您必须为您的$config阵列命名。

创建一组规则

为了将您的规则组织到“集合”中,需要将它们放入“子阵列”中。考虑下面的例子,显示两组规则。我们任意调用这两个规则“注册”和“电子邮件”。你可以任意指定你的规则:

$config = array(        'signup' => array(                array(                        'field' => 'username',                        'label' => 'Username',                        'rules' => 'required'                ),                array(                        'field' => 'password',                        'label' => 'Password',                        'rules' => 'required'                ),                array(                        'field' => 'passconf',                        'label' => 'Password Confirmation',                        'rules' => 'required'                ),                array(                        'field' => 'email',                        'label' => 'Email',                        'rules' => 'required'                )        ),        'email' => array(                array(                        'field' => 'emailaddress',                        'label' => 'EmailAddress',                        'rules' => 'required|valid_email'                ),                array(                        'field' => 'name',                        'label' => 'Name',                        'rules' => 'required|alpha'                ),                array(                        'field' => 'title',                        'label' => 'Title',                        'rules' => 'required'                ),                array(                        'field' => 'message',                        'label' => 'MessageBody',                        'rules' => 'required'                )        ));

调用特定的规则组

为了调用一个特定的组,你将把它的名字传递给该run()方法。例如,要调用注册规则,您将执行以下操作:

if ($this->form_validation->run('signup') == FALSE){
        $this->load->view('myform');}else{
        $this->load->view('formsuccess');}

将控制器方法与规则组关联

调用规则组的另一种(更自动的)方法是根据您打算使用的控制器类/方法来命名它。例如,假设您有一个名为Member的控制器和一个名为signup的方法。以下是您的班级可能的样子:

<?phpclass Member extends CI_Controller {        public function signup()        {
                $this->load->library('form_validation');                if ($this->form_validation->run() == FALSE)                {
                        $this->load->view('myform');                }                else                {
                        $this->load->view('formsuccess');                }        }}

在您的验证配置文件中,您将为您的规则组成员/注册命名:

$config = array(        'member/signup' => array(                array(                        'field' => 'username',                        'label' => 'Username',                        'rules' => 'required'                ),                array(                        'field' => 'password',                        'label' => 'Password',                        'rules' => 'required'                ),                array(                        'field' => 'passconf',                        'label' => 'PasswordConfirmation',                        'rules' => 'required'                ),                array(                        'field' => 'email',                        'label' => 'Email',                        'rules' => 'required'                )        ));

当一个规则组的命名方式与控制器类/方法的命名方式相同时,当该run()方法从该类/方法调用时,它将自动使用。

使用数组作为字段名称

Form Validation类支持使用数组作为字段名称。考虑这个例子:

<input type="text" name="options[]" value="" size="50" />

如果您确实使用数组作为字段名称,则必须在帮助器函数中使用需要字段名称的EXACT数组名称以及您的验证规则字段名称。

例如,要为上述字段设置规则,您可以使用:

$this->form_validation->set_rules('options[]', 'Options', 'required');

或者,要显示上述字段的错误,您可以使用:

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

或者重新填充您要使用的字段:

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

您也可以使用多维数组作为字段名称。例如:

<input type="text" name="options[size]" value="" size="50" />

甚至:

<input type="text" name="sports[nba][basketball]" value="" size="50" />

和我们的第一个例子一样,你必须在辅助函数中使用确切的数组名称:

<?php echo form_error('sports[nba][basketball]'); ?>

如果您使用具有多个选项的复选框(或其他字段),请不要忘记在每个选项后留下一个空括号,以便将所有选择都添加到POST数组中:

<input type="checkbox" name="options[]" value="red" /><input type="checkbox" name="options[]" value="blue" /><input type="checkbox" name="options[]" value="green" />

或者,如果您使用多维数组:

<input type="checkbox" name="options[color][]" value="red" /><input type="checkbox" name="options[color][]" value="blue" /><input type="checkbox" name="options[color][]" value="green" />

当你使用辅助函数时,你也会包含这个括号:

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

规则参考

以下是可供使用的所有本机规则的列表:

规则

参数

描述

需要

没有

如果表单元素为空,则返回FALSE。


火柴

如果表单元素与参数中的表单元素不匹配,则返回FALSE。

matchesform_item

regex_match

如果表单元素与正则表达式不匹配,则返回FALSE。

regex_match /正则表达式/

不同

如果表单元素与参数中的元素没有差异,则返回FALSE。

differsform_item

是独特的

如果表单元素对参数中的表和字段名称不唯一,则返回FALSE。注意:此规则要求启用查询生成器才能工作。

is_uniquetable.field

MIN_LENGTH

如果表单元素比参数值短,则返回FALSE。

min_length3

最长长度

如果表单元素长于参数值,则返回FALSE。

max_length12

exact_length

Returns FALSE if the form element is not exactly the parameter value.

exact_length8

greater_than

Yes

Returns FALSE if the form element is less than or equal to the parameter value or not numeric.

greater_than8

greater_than_equal_to

Yes

Returns FALSE if the form element is less than the parameter value, or not numeric.

greater_than_equal_to8

less_than

Yes

Returns FALSE if the form element is greater than or equal to the parameter value or not numeric.

less_than8

less_than_equal_to

Yes

Returns FALSE if the form element is greater than the parameter value, or not numeric.

less_than_equal_to8

in_list

Yes

Returns FALSE if the form element is not within a predetermined list.

in_listred,blue,green

alpha

No

Returns FALSE if the form element contains anything other than alphabetical characters.


alpha_numeric

No

如果表单元素包含除字母数字字符以外的任何内容,则返回FALSE。


alpha_numeric_spaces

没有

如果表单元素包含除字母数字字符或空格之外的任何内容,则返回FALSE。修剪后应使用,以避免在开始或结束时出现空格。


alpha_dash

没有

如果表单元素包含除字母数字字符,下划线或破折号之外的任何内容,则返回FALSE。


数字

没有

如果表单元素包含数字字符以外的任何内容,则返回FALSE。


整数

没有

如果表单元素包含除整数以外的任何内容,则返回FALSE。


十进制

没有

如果表单元素包含除十进制数以外的任何内容,则返回FALSE。


is_natural

没有

如果表单元素包含除自然数以外的任何其他值,则返回FALSE:0,1,2,3等


is_natural_no_zero

没有

如果表单元素包含除自然数以外的任何值,但不为零,则返回FALSE:1,2,3等


valid_url

没有

如果表单元素不包含有效的URL,则返回FALSE。


VALID_EMAIL

没有

如果表单元素不包含有效的电子邮件地址,则返回FALSE。


valid_emails

没有

如果逗号分隔列表中提供的任何值不是有效的电子邮件,则返回FALSE。


valid_ip

如果提供的IP地址无效,则返回FALSE。接受“ipv4”或“ipv6”的可选参数以指定IP格式。


valid_base64

没有

如果提供的字符串包含有效的Base64字符以外的任何内容,则返回FALSE。


注意

这些规则也可以称为离散方法。例如:

$this->form_validation->required($string);

注意

您还可以使用任何允许最多两个参数的本地PHP函数,其中至少需要一个参数(以传递字段数据)。

准备参考

以下是可供使用的所有准备方法的列表:

Name

参数

描述

prep_for_form

没有

DEPRECATED:转换特殊字符,以便HTML数据可以显示在表单字段中而不会被破坏。

prep_url

没有

如果缺少URL,则添加“http://”。

strip_image_tags

没有

从离开原始URL的图像标签剥离HTML。

encode_php_tags

没有

将PHP标签转换为实体。

注意

您还可以使用任何PHP函数允许一个参数,如trim()htmlspecialchars()urldecode(),等。

类参考

class CI_Form_validationset_rules($field[, $label = ''[, $rules = ''[, $errors = array()]]])

参数:

$ field(string) - 字段名称$ label(字符串) - 字段标签$ rules(mixed) - 验证规则,作为由管道“|”分隔的字符串列表,或者作为数组或规则$错误(数组)自定义错误消息列表

返回:

CI_Form_validation实例(方法链接)

返回类型:

CI_Form_validation

  • $ fieldstring) - 字段名称

  • $ label字符串) - 字段标签

  • $ rulesmixed) - 验证规则,作为由管道“|”分隔的字符串列表,或者作为数组或规则

  • $ errorsarray) - 自定义错误消息的列表

Returns:  CI\_Form\_validation instance (method chaining)
Return type:  CI\_Form\_validation
允许您设置验证规则,如以上教程部分所述:
  • 设置验证规则

  • 将一组验证规则保存到配置文件

run([$group = ''])

参数:

$ group(string) - 要运行的验证组的名称

返回:

成功为TRUE,如果验证失败,则为FALSE

返回类型:

布尔

  • $ groupstring) - 要运行的验证组的名称

返回:成功时为TRUE,如果验证失败,则返回FALSE
Return type:  bool
运行验证例程。成功时返回布尔值TRUE,失败时返回FALSE。您可以选择通过方法传递验证组的名称,如下所述:[将验证规则集保存到配置文件](about:blank#saving-groups)

set_message($lang[, $val = ''])

参数:

$ lang(string) - 消息的规则是$ val(字符串) - 消息

返回:

CI_Form_validation实例(方法链接)

返回类型:

CI_Form_validation

  • $ langstring) - 消息的规则

  • $ val字符串) - 消息

Returns:  CI\_Form\_validation instance (method chaining)
Return type:  CI\_Form\_validation
允许您设置自定义错误消息。参见[设置错误消息](关于:空白#设置错误消息)

set_error_delimiters([$prefix = '<p>'[, $suffix = '</p>']])

参数:

$ prefix(string) - 错误消息前缀$ suffix(string) - 错误消息后缀

返回:

CI_Form_validation实例(方法链接)

返回类型:

CI_Form_validation

  • $ prefix字符串) - 错误消息前缀

  • $ suffix字符串) - 错误消息后缀

Returns:  CI\_Form\_validation instance (method chaining)
Return type:  CI\_Form\_validation
设置错误消息的默认前缀和后缀。

set_data($data)

参数:

$ data(array) - 数据验证数组

返回:

CI_Form_validation实例(方法链接)

返回类型:

CI_Form_validation

  • $ dataarray) - 数据验证数组

Returns:  CI\_Form\_validation instance (method chaining)
Return type:  CI\_Form\_validation
允许你为验证设置一个数组,而不是使用默认的`$ _POST`数组。

reset_validation()

返回:

CI_Form_validation实例(方法链接)

返回类型:

CI_Form_validation

error_array()

返回:

错误消息数组

返回类型:

排列

error_string([$prefix = ''[, $suffix = '']])

参数:

$ prefix(string) - 错误消息前缀$ suffix(string) - 错误消息后缀

返回:

作为字符串的错误消息

返回类型:

  • $ prefix字符串) - 错误消息前缀

  • $ suffix字符串) - 错误消息后缀

Returns:  Error messages as a string
Return type:  string
返回格式为字符串并由换行符分隔的所有错误消息(从错误\ _array()返回)。

error($field[, $prefix = ''[, $suffix = '']])

参数:

$ field(string) - 字段名称$ prefix(字符串) - 可选前缀$ suffix(字符串) - 可选后缀

返回:

错误消息字符串

返回类型:

  • $ fieldstring) - 字段名称

  • $ prefix字符串) - 可选的前缀

  • $ suffix字符串) - 可选后缀

Returns:  Error message string
Return type:  string
返回特定字段的错误消息,可选地为其添加前缀和/或后缀(通常为HTML标签)。

has_rule($field)

参数:

$ field(string) - 字段名称

返回:

如果该字段设置了规则,则为TRUE,否则为FALSE

返回类型:

布尔

  • $ fieldstring) - 字段名称

Returns:  TRUE if the field has rules set, FALSE if not
Return type:  bool
检查是否有指定字段的规则集。

助手参考

请参阅Form Helper手册以了解以下功能:

  • form_error()

  • validation_errors()

  • set_value()

  • set_select()

  • set_checkbox()

  • set_radio()

请注意,这些是程序性功能,因此它们要求您预先安排它们$this->form_validation

Vorheriger Artikel: Nächster Artikel: