Bug: getValidated() missing data when double wildcard rule
PHP Version
8.3
CodeIgniter4 Version
4.5.5
CodeIgniter4 Installation Method
Composer (using codeigniter4/appstarter)
Which operating systems have you tested for this bug?
macOS, Linux
Which server did you use?
apache
Database
MySQL 5.7, 10.5.22-MariaDB
What happened?
When running validation in the controller and grabbing the validated data with $this->validator->getValidated(), the data for double wild card rules (eg dates.*.*) is missing.
Steps to Reproduce
Implement this controller (or the logic):
<?php
namespace App\Controllers\Back;
use App\Controllers\BaseController;
class TestController extends BaseController
{
public function test()
{
$data = [
'id' => 1,
'dates' => [
23 => [
45 => '3.4.24',
],
],
];
$this->validateData($data, [
'id' => 'required',
'dates.*.*' => 'required',
]);
$validated = $this->validator->getValidated();
d($data, $validated);
}
}
Expected Output
The validated data including in this case the date array.
Anything else?
I think the problem is that the validation rule ends in a double wildcard, because when i change the array and rules to this it works:
$data = [
'id' => 1,
'dates' => [
23 => [
45 => [
'date' => '3.4.24',
],
],
],
];
$this->validateData($data, [
'id' => 'required',
'dates.*.*.date' => 'required',
]);
$validated = $this->validator->getValidated();
d($data, $validated);
Does CI4 not like rules ending with wildcards?
@sanchawebo can you test on my PR #9220?
Earliest i can test this would be next week, sorry.
Tested your PR and it worked for my project. Thank you very much.