Laravel проверяет данные JSON

В этом коде я пытаюсь проверить данные 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 должно быть возвращено истина. но вернуть ложь

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

Другие решения

Вот метод, который работал для меня.

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

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

Надеюсь, вы найдете это полезным.

1

По вопросам рекламы [email protected]