In Joomla 6 there is a bug in in Joomla\Input\Input
public function getArray..
My test Code:
$app = Factory::getApplication();
print_r($app->input->get->getArray());
URL in browser:
../administrator/index.php?option=com_test&a[attributes]=attributes
An error has occurred.
0 Joomla\Filter\InputFilter::cleanAttributes(): Argument #1 ($attrSet) must be of type array, string given, called in C:\OSPanel\home\j6\libraries\vendor\joomla\filter\src\InputFilter.php on line 248
Call Stack
-- | -- | --
1 | () | JROOT\libraries\vendor\joomla\filter\src\InputFilter.php:527
2 | Joomla\Filter\InputFilter->cleanAttributes() | JROOT\libraries\vendor\joomla\filter\src\InputFilter.php:248
3 | Joomla\Filter\InputFilter->clean() | JROOT\libraries\vendor\joomla\input\src\Input.php:204
4 | Joomla\Input\Input->getArray() | JROOT\libraries\vendor\joomla\input\src\Input.php:196
5 | Joomla\Input\Input->getArray()
| Labels |
Added:
No Code Attached Yet
|
||
| Title |
|
||||||
The situation is even worse
My test Code:
$app = Factory::getApplication();
print_r($app->input->get->getArray());
URL in browser:
../administrator/index.php?option=com_test&a=int
Result:
Array ( [option] => com_test [a] => 0 )
URL in browser:
../administrator/index.php?option=com_test&a=bool
Result:
Array ( [option] => com_test [a] => 1 )
URL in browser:
../administrator/index.php?option=com_test&a=attributes
An error has occurred.
0 Joomla\Filter\InputFilter::cleanAttributes(): Argument #1 ($attrSet) must be of type array, string given, called in C:\OSPanel\home\j6\libraries\vendor\joomla\filter\src\InputFilter.php on line 248
Joomla 5 code
protected function getArrayRecursive(array $vars = [], $datasource = null, $defaultFilter = 'unknown', $recursion = false)
{
if (empty($vars) && \is_null($datasource)) {
$vars = $this->data;
} else {
if (!$recursion) {
$defaultFilter = null;
}
}
Joomla 6 code
public function getArray(array $vars = [], $datasource = null)
{
if (empty($vars) && $datasource === null) {
$vars = $this->data;
}
Bug in code
$results[$k] = $this->get($k, null, $filter);
changed to:
$results[$k] = $this->get($k, null, $v);