Skip to content

Commit 4c50304

Browse files
committed
Container::setValues() and setDefaults() accepts array|Traversable|stdClass (BC break)
1 parent 7d4b6a7 commit 4c50304

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/Forms/Container.php

+8-2
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,27 @@ class Container extends Nette\ComponentModel\Container implements \ArrayAccess
4545

4646
/**
4747
* Fill-in with default values.
48+
* @param array|\Traversable|\stdClass $values
4849
*/
49-
public function setDefaults(array|object $data, bool $erase = false): static
50+
public function setDefaults(array|object $values, bool $erase = false): static
5051
{
5152
$form = $this->getForm(false);
52-
$this->setValues($data, $erase, $form?->isAnchored() && $form->isSubmitted());
53+
$this->setValues($values, $erase, $form?->isAnchored() && $form->isSubmitted());
5354
return $this;
5455
}
5556

5657

5758
/**
5859
* Fill-in with values.
60+
* @param array|\Traversable|\stdClass $values
5961
* @internal
6062
*/
6163
public function setValues(array|object $values, bool $erase = false, bool $onlyDisabled = false): static
6264
{
65+
if (is_object($values) && !($values instanceof \Traversable || $values instanceof \stdClass)) {
66+
trigger_error(__METHOD__ . ': argument should be array|Traversable|stdClass, ' . get_debug_type($values) . ' given.');
67+
}
68+
6369
$values = $values instanceof \Traversable
6470
? iterator_to_array($values)
6571
: (array) $values;

tests/Forms/Container.values.mapping.phpt

+3-4
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@ use Tester\Assert;
1010
require __DIR__ . '/../bootstrap.php';
1111

1212

13-
#[AllowDynamicProperties]
14-
class FormData
13+
class FormData extends stdClass
1514
{
1615
public string $title;
1716

1817
public FormFirstLevel $first;
1918
}
2019

2120

22-
class FormFirstLevel
21+
class FormFirstLevel extends stdClass
2322
{
2423
public string $name;
2524

@@ -29,7 +28,7 @@ class FormFirstLevel
2928
}
3029

3130

32-
class FormSecondLevel
31+
class FormSecondLevel extends stdClass
3332
{
3433
public string $city;
3534
}

0 commit comments

Comments
 (0)