【问题标题】:Setting form validation rules in CodeIgniter在 CodeIgniter 中设置表单验证规则
【发布时间】:2013-03-24 12:12:12
【问题描述】:

我有这些问题,我想在“文本”类型的三种输入形式上设置规则,我的规则是至少这三个中的一个具有值(三),我不知道如何在CI中设置它们,因为它们在触发run()时完全执行,你们中的任何人都知道如何在CI中设置这些规则以形成验证请做分享你的知识。

【问题讨论】:

    标签: codeigniter validation


    【解决方案1】:

    您可以设置自己的验证函数类型。 here 有很好的文档记录,但摘录如下:

    <?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;
            }
        }
    
    }
    ?>
    

    callback_username_check 正在调用控制器中的username_check 函数

    回答您的最新评论

    // $data is $_POST 
    function my_form_validator($data)
    {
        $data = 'dont worry about this';
        // you have access to $_POST here
        $field1 = $_POST['field1'];
    
    
        if($field1 OR $field2 OR $field3)
        {
            // your fields have value       
            return TRUE;
        }
        else
        {
            // your fields dont have any value
            $this->form_validation->set_message('field1', 'At least one of the 3 fields should have a value');
    
            return FALSE;
        }
    }
    

    【讨论】:

    • 我看不出它如何允许 3 个输入,即使 3 个输入中只有 1 个具有值
    • 哦,原来如此,我试试这个
    • 如果是这样的话,可以传入一个额外的数据,那么field2和3是从哪里来的呢? field1 是在 setmessage 的第一个参数传递的唯一表单名称
    • 嗯,虽然你有一个观点......但是你怎么能验证那个连接的单词呢?,我所知道的就是使用 CI 的表单验证从输入 html 标记传递输入名称
    • 我刚刚测试过,在您的my_form_validator() 类中,您可以访问$_POST 数组。访问所有表单字段值应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多