Не получается отловить исключение при валидации Codeigniter 4
Отправляю json
методом post
на контроллер через curl.
В контроллере написано следующее:
try
{
$input = $this->request->getJSON(true);
$this->validation->setRules([
'arrayValues.*.someId' => 'trim|required|string'
]);
$this->validation->run($input);
}
catch (\Exception $e)
{
$result = false;
}
Ожидаемый верный декодированный массив:
$decodedArray = ['arrayValues' => [['someId' => 'qwe'],['someId' => 'ewq']]];
В результате выполнения получаю ошибку внутри блока try/catch
и в блок catch
не переходит.
Это происходит если приходят данные, не во вложенном массиве: "Argument 2 passed to _array_search_dot() must be of the type array, string given, called in /codeigniter/system/Helpers/array_helper.php on line 56
:
$decodedArray = ['arrayValues' => ['someId' => 'qwe']];
Если приходит пустой массив, то получаю ошибку /codeigniter/system/Validation/Validation.php(266): trim()
-> trim() expects parameter 1 to be string, array given
, но она ловится в try/catch
нормально.
$decodedArray = ['arrayValues' => []];
Почему такое происходит и как от этого избавиться?
Источник: Stack Overflow на русском