Laravel验证json数据

时间:2014-12-02 19:16:31

标签: php json laravel laravel-4 laravel-validation

在这段代码中,我尝试验证json数据,但验证器返回false

        $username = $data['username'];
        $password = $data['password'];

        $input = Input::json();
        $rules = array(
            'username' => 'required',
            'password' => 'required',
        );
        $input_array = (array)$input;
        $validation = Validator::make($input_array, $rules);
        if ($validation->fails()) {
            var_dump( $input_array );
        }else {
                $result = array('code'=>'3');
            }

var_dump结果是:

array(1) {  ["parameters"]=>  array(3) {    ["password"]=>    string(9) "world"    ["username"]=>    string(1) "hello"    ["function"]=>    string(8) "register"  }}""

用户名和密码不为空,$validation必须返回true。但是返回false

2 个答案:

答案 0 :(得分:2)

您的var_dump会显示您尝试验证的数据位于'参数'阵列。您需要更改规则以包含参数,或者需要将参数数组传递给validate方法。

选项1 - 更改规则:

$rules = array(
    'parameters.username' => 'required',
    'parameters.password' => 'required',
);
$input_array = (array)$input;
$validation = Validator::make($input_array, $rules);

选项2 - 验证参数数组中的数据:

$rules = array(
    'username' => 'required',
    'password' => 'required',
);
$input_array = (array)$input;
$validation = Validator::make($input_array['parameters'], $rules);

答案 1 :(得分:1)

这是一种对我有用的方法。

$InputData = array('username' =>Input::json('username'),
                    'password'=>Input::json('password'));

$validation = Validator::make( $InputData,array('username'=>'required|email','password'=>'required'));

希望你觉得它很有用。