代码之家  ›  专栏  ›  技术社区  ›  Vrajesh Doshi

在单个验证规则回调函数中获取输入请求json的2个或多个键的值

  •  0
  • Vrajesh Doshi  · 技术社区  · 6 年前

    application/config/form_validation.php文件

    <?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    $config = array(
        'signup' => array(
                array(
                        'field' => 'first_name',
                        'label' => 'first_name',
                        'rules' => 'required|callback_fullname_chk'                    
                ),
                array(
                    'field' => 'last_name',
                    'label' => 'last_name',
                    'rules' => 'required'                    
            )
    ));
    

    public function reg_form()
        {
            $input_data_array = (array)json_decode(file_get_contents('php://input'));
    
            $this->form_validation->set_data($input_data_array);
            if ($this->form_validation->run('signup') == FALSE)
            {                   
                    $result = array('status' => 404,'message' => $this->form_validation->error_array());
                    $this->output->set_output(json_encode($result));
            }
            else
            {
                    $result = array('status' => 200,'message' => 'Executed Succesfully','data'=>$input_data_array);
                    $this->output->set_output(json_encode($result));
            }
        }
    
    
    
    public function fullname_chk($str)
     {
             if ($str == 'admin')
             {
                     $this->form_validation->set_message('fullname_chk', 'The {field} field can not be the word "admin"');
                     return FALSE;
             }
             else
             {
                     return TRUE;
             }
     }
    

    在“fullname-chk”回调函数中,我隐式地在$str变量中获取第一个名称的值,我可以使用该值进行自定义验证。我的要求是在同一个回调中获取最后一个名称(第二个输入JSON键)的值,以及第一个名称,可能作为第二个参数,因为我不想编写业务逻辑来检查第一个名称和最后一个名称的唯一性。请帮忙。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Alex    6 年前

    在你的 fullname_chk $input_data_array = (array)json_decode(file_get_contents('php://input')); 但是,除非您想在表单验证库之外进行某种验证,否则没有其他方法可以将额外的数据传递给回调。