【问题标题】:CodeIgniter Form_Validation without actual form没有实际表单的 CodeIgniter Form_Validation
【发布时间】:2012-08-03 00:17:26
【问题描述】:

我想做的很简单(我希望):
我正在尝试使用 Form_Validation 验证 POST 数据(或通过 variable 提供的任何数据)。
问题是要运行实际验证我/我们需要做

if ($this->form_validation->run() == FALSE){
 //validation did not pass
}else{
 //validation did pass
}

我的一套规则是这样的:

$this->form_validation->set_rules('key', '', 'trim|required'); //simplified

所以,我显然是通过 AJAX 向这个脚本发送数据

echo $_POST['key']; //prints valid value that is sent from AJAX

如何使用 form_validation 验证 $_POST['key']?

AJAX 代码

$("#key-inputs .short, #key-inputs .long").change(function () {
        var key = $(this).val();
        var id = $(this).attr('name');
        var table = $(this).attr('class');
        var file = $('span .file').val();
        var data = 'NULL';
        $.post(file + "/edit",{
                        id:id,
                        key:key,
                        file:file,
                        table:table},
                        function(code, textStatus) {
                        data = code;
        });
        $(this).ajaxStop(function(){
            if (data == 3) $(this).parent().fadeOut('slow', function() {}); //delete
            if (data == 2) $(this).fadeOut(200).fadeIn(200); //update
            if (data == 5) alert('not valid'); //update parameter is not valid input (depends on set_value rules)
            //writeConsole(previous.val().outerHTML);
        });
    });

PHP代码//简化

if (!$this->input->is_ajax_request()) redirect('lang/translate/keys/'.$param);
          //do work here
         if ($key == "") {
          //delete key
            $this->lang_translate_model->DeleteKey($id, $table);
            echo 3;
            return TRUE;
         }
         $this->form_validation->set_rules('key', 'key', 'trim|required|max_length[56]|xss_clean|unique_file[lang_key:'.$param.']');
         if ($this->form_validation->run() == FALSE){
          //validation did not pass
          echo 5;
        }

所以我有一些(生成的)输入,在更改时我只想在 ..set_rules 通过时在数据库中进行更新。
如果输入为空,它会自行删除(这很好用)

解决方案
TRUE/FALSE 表为here

if ($this->form_validation->required($key)){
          //validation did not pass
          echo 5;
}

如果有参数要传递例如min_length[2];

$this->form_validation->min_length($key,'2');

【问题讨论】:

    标签: php ajax codeigniter validation


    【解决方案1】:

    这取决于您使用的 codeigniter 版本

    codeigniter 3.0:

    您可以使用 set_data 方法来验证您的自定义数据

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

    codeigniter 2.X:

    手动设置$_POST

       $_POST'username']  = 'johndoe';
       $_POST['password'] ='mypassword';
       $_POST['passconf'] = 'mypassword';
    

    常见:

    对于共同的部分,谢天谢地,他们仍然使用 form_validation->run()form_validation->set_rules(<SPECIFIC ATTRIBUTE RULES>)

    【讨论】:

      【解决方案2】:

      this。另请查看该页面上的以下注释。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-07
        • 1970-01-01
        • 2018-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-25
        • 2015-10-06
        相关资源
        最近更新 更多