Skip to content

Commit 6572102

Browse files
committed
Container::setValues() and setDefaults() accepts array|Traversable|stdClass (BC break)
1 parent c499c6f commit 6572102

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

src/Forms/Container.php

Lines changed: 8 additions & 2 deletions
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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,22 @@ use Tester\Assert;
1111
require __DIR__ . '/../bootstrap.php';
1212

1313

14-
#[AllowDynamicProperties]
15-
class FormData
14+
class FormData extends stdClass
1615
{
1716
public string $title;
1817
public FormFirstLevel $first;
1918
}
2019

2120

22-
class FormFirstLevel
21+
class FormFirstLevel extends stdClass
2322
{
2423
public string $name;
2524
public ?int $age = null;
2625
public ?FormSecondLevel $second;
2726
}
2827

2928

30-
class FormSecondLevel
29+
class FormSecondLevel extends stdClass
3130
{
3231
public string $city;
3332
}

0 commit comments

Comments
 (0)