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

时间:2018-06-19 05:47:50

标签: codeigniter

以下是我

的代码
  

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'                    
        )
));

以下是我

的代码
  

应用/控制器/ UserController.php

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

在&#39; fullname_chk&#39;回调函数我在$ str变量中隐式获取first_name的值,我可以将其用于自定义验证。我的要求是在同一个回调中获取last_name(第二个输入json键)的值,以及first_name,可能作为第二个参数,因为我不想编写业务逻辑来检查first_name的唯一性和last_name一起使用。请帮助。

1 个答案:

答案 0 :(得分:1)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <div id="divListItems"></div> <script> $(function () { ExecuteOrDelayUntilScriptLoaded(addListItems, "sp.js"); }); function addListItems() { var clientContext = new SP.ClientContext(); var oList = clientContext.get_web().get_lists().getByTitle('faq'); var itemCreateInfo = new SP.ListItemCreationInformation(); this.oListItem = oList.getItem(itemCreateInfo); clientContext.load(oListItem); clientContext.executeQueryAsync( Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed) ); } function onQuerySucceeded() { alert('Item created: ' + oListItem.get_item('Title')); } function onQueryFailed(sender, args) { alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); } </script>函数中,您可以像平常一样访问任何post / get变量。在这种情况下,您可以重用fullname_chk,但是没有其他方法可以将额外数据传递给回调,除非您想在表单验证库之外进行某种验证。