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

Codeigniter:验证两个字段

越俊驰
2023-03-14

我有两个数字字段来收集用户的数据。需要使用codeigniter表单验证类对其进行验证。

条件:

  1. 第一个字段可以为零
  2. 第二字段不能为零
  3. 第一字段不应等于第二字段
  4. 第二字段应大于第一字段

目前我使用

美元这个-

美元这个-

但是,如何验证上述第3和第4个条件?

提前谢谢。

共有3个答案

赖诚
2023-03-14

如果您正在使用HMVC,并且接受的解决方案不起作用,那么在控制器中初始化后添加以下行

$this->form_validation->CI =& $this;

就这样吧

$this->load->library('form_validation');
$this->form_validation->CI =& $this;  

在你的控制器里。

葛航
2023-03-14

您可以使用回调为3和4编写自己的验证函数

http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#callbacks

来自doc的示例

<?php

class 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 %s field can not be the word "test"');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }

}
?>
罗昊明
2023-03-14

谢谢dm03514。我通过下面的回调函数使它工作。

$this->form_validation->set_rules('first_field', 'First Field', 'trim|required|is_natural');
$this->form_validation->set_rules('second_field', 'Second Field', 'trim|required|is_natural_no_zero|callback_check_equal_less['.$this->input->post('first_field').']');

回调函数是:

function check_equal_less($second_field,$first_field)
  {
    if ($second_field <= $first_field)
      {
        $this->form_validation->set_message('check_equal_less', 'The First &amp;/or Second fields have errors.');
        return false;       
      }
      return true;
  }

现在一切似乎都很好:)

 类似资料:
  • 我有两个日期字段来收集用户的数据。需要使用codeigniter表单验证类来验证它。 场景: > 第一个日期字段可以为空 第二个日期字段不能为空 第一个日期字段不应大于今天的日期 第二个日期字段应大于第一个日期字段 美元这个- 美元这个- 回调函数是:

  • 问题内容: 我正在使用JPA 2.0 /hibernate验证来验证我的模型。我现在遇到一种情况,必须验证两个字段的组合: 该模型是无效的,如果都和都null和其他有效。 如何使用JPA 2.0 / Hibernate执行这种验证?使用简单的注释,两个吸气剂都必须为非null才能通过验证。 问题答案: 对于多属性验证,应使用类级别的约束。摘自 Bean Validation Sneak Peek第

  • 我正在开发一个Spring MVC应用程序,有一个关于Spring验证的问题。首先,我在我的控制器中有这个动作: 现在,我想对和进行比较验证。这个验证应该检查这两个字段的相等性。我怎么能那样做?如有任何帮助,将不胜感激。

  • 我想上传两个或更多的图片,使用一个表单在不同的领域到数据库使用Codeigniter。 但是这里只有一个正在上传...有人能帮我吗... 我的控制器 这是我的模型 这是我的看法 我的数据库 请帮我上传到单独的数据库字段作为两个单独的文件

  • 我如何验证一个列表的值跨字段,其中至少一个单一的值必须设置(不是零) 我需要验证至少有一个字段被输入(例如总数不是零) 我遇到的问题是,当任何一个字段发生更改时,validator::total_cost不会重新评估所有正在验证的字段。 在“任意”输入中键入正确的值需要告诉“所有”其他输入,以便根据新的计算字段重新估价! 任何帮助都将不胜感激。 (我的电视机大得多) 我正在使用的标记 AnyVal