当前位置: 首页 > 知识库问答 >
问题:

使用规则集的Codeigniter表单验证

邓阳炎
2023-03-14

我试图在我的Codeigniter项目中创建一组表单验证规则,以便在第一组验证失败时,第二个验证集不应运行。

我在CI手册里找到了这个:

$config = array(
             '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'
                                     )
                                ),
             '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'
                                     )
                                )                          
           );
$this->form_validation->set_rules($config);

我知道我现在可以分别运行每个集合的验证($this-

问题是,当我使用$config数组时,当表单post失败时,错误不会添加到表单验证类中(因此不会显示)。当我不使用规则集,但只使用$this时,它确实添加并显示了错误-

当使用一组规则输入无效表单数据时,没有添加错误消息,这是我做错了什么?

共有3个答案

公冶麒
2023-03-14

如果有人面临同样的问题,试试这个:

if ($this->form_validation->run('signup') === FALSE) { /* return your errors */ }

$this->form_validation->reset_validation();
$this->form_validation->set_data($data);
if ($this->form_validation->run('email') === FALSE) { /* return your errors */ }

// Do your stuff 

您需要在每次验证后重置以更改规则。您还可以使用:

$this->form_validation->set_rules($validation_rules);

注意:先设置数据,然后再设置规则,反之亦然!

左丘嘉言
2023-03-14

尝试在form_validation数组中array_merge。

在这里,如果您希望两个数组合并和gat连接,则会出现验证错误。你可以用这个

$config["form"] = array_merge($config['signup'], $config['email']);

希望这有帮助。

廖夜洛
2023-03-14

$config数组需要位于Application/config目录中名为form_validation.php的文件中。然后在加载CI时自动加载,并在创建时传递给Form验证对象。

第一次调用FV对象的run()方法时,如果FV对象中没有设置任何规则,它将查找创建时给出的配置规则,并使用由作为参数传递的名称索引的组来运行()。在CI应用程序的同一调用中,即使使用不同的组名称,所有后来对run()的调用都将绕过此检查,因为现在已经设置了规则——也就是说,您只能在一次调用中设置一次规则组。

因此,您无法创建两组规则,然后一个接一个地调用。你可以叫一个或另一个。

最好使用set_rule()级联规则,即使用set_rule()添加一些规则,然后根据它们进行验证。如果通过,请添加更多规则并重试验证。你有效地重复旧规则,知道它们会通过,但这意味着任何失败都将是新规则的结果。

 类似资料:
  • 我有以下密码验证规则: 至少8个字符 我试图找到这个规则的正则表达式模式,最接近的是: 但这并不适用于所有规则。 我对正则表达式是新手,如果有任何可以学习正则表达式的资源,我将不胜感激。

  • 路过的大佬,应该怎么校验?麻烦大家啦:

  • 自定义了一个表单验证类,但是在django中当我clean_UserName这个方法执行了并抛出异常的时候,其他的验证方法还会继续执行,怎么才能在一个验证方法抛出异常后其他的方法都中止执行呢?

  • 问题内容: 如果我不想刷新页面,该如何在Codeigniter中进行表单验证?基本上我这样做: 但是,如果我使用ajax发送数据并且页面没有刷新,我该如何进行表单验证? 编辑: 谢谢@ Amra Kojon。很好并且可行,但是新的问题是: 如果我只是在其他部分说回声“某事”,它可以工作,并且如果验证还可以,则回声你好,但是如果我在数据库中写入主题(值数组中包含数据且不是ajax方式,则插入日期),

  • 在antd3的自定义表单项中,为什么无法触发规则校验 只有这样写才可以 像下面这样写就不能触发错误校验 不是特别理解第一种方式,有大佬可以讲解一下嘛

  • 3.4 运行规则分析 本节会给大家提供一个参考实例,用于告诉大家如何根据具体的业务实现自己的爬虫框架。 我们以公共规则中“阿里巴巴产品搜索”为例(这些公共的规则都在github.com/pholcus下面包含,大家可以参考下)。 package spider_lib // 基础包 import ( "github.com/PuerkitoBio/goquery"