对于一个字段具有2条可调用的表单验证规则

时间:2019-06-19 20:21:20

标签: codeigniter validation

我在数据库中有一个人员表,每个人都有唯一的ID(p_id)。 然后还有另外两个表(授权和干预),其记录与(p_id)链接到人员表

因此,我需要从数据库中删除人员,我将p_id传递/发送到控制器中的删除功能以删除人员,但是我需要先检查授权和干预表中是否没有记录,然后才能删除人员删除。

我在p_id上使用form_validation


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

        $this->form_validation->set_rules(
            'p_id', 'Autorisations', array(
                'trim', array(
                    'p_id_auth_callable',array($this->Personnel_model, 'check_pers_tasks')
                        )
            ),
            array('p_id_auth_callable' => ' Delete All {field}')
        );

        $this->form_validation->set_rules(
            'p_id', 'Interventions', array(
                'trim', array('p_id_intv_callable',array($this->Personnel_model, 'check_pers_intv'))
            ),
            array('p_id_intv_callable' => ' Delete All {field}')
        );

if ($this->form_validation->run() == FALSE){

            $pers_delete_msg['icon']  = 'fas fa-exclamation-triangle fa-lg';
            $pers_delete_msg['title']  = 'Warning';
            $pers_delete_msg['status'] = 'warning';
            $pers_delete_msg['text'] = validation_errors('<span class="fas fa-exclamation-triangle"></span>','');// . print_r($post_val,true) ;
        }   
        else{
            //delete person 
        }


这两个规则都有效(如果我使用其中一个),我会得到正确的消息。

如果我像上面的代码一样同时使用这两个规则,则只会生成最后一条规则的消息。

我可以在一条规则中合并2个可调用项。

我使用datatable插件,并通过jquery ajax函数将p_id发送到控制器

$('#table tbody').on( 'click', '.delete_pers', function (e) {

        e.preventDefault();
        var pers_data = table.row( $(this).parents('tr') ).data();
        $.ajax({
                url: base_url +"personnel/delete_pers/",
                data: { 
                    p_id: pers_data['p_id'] 
                },
                type: 'POST',
                dataType:'json',
                success: function(response){
                 //display response
                }
                error: function(response){
                 //display
                }
 } );

0 个答案:

没有答案