From 5190097d7ad6c9f6949598430eacf6a43b5da056 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Thu, 8 Feb 2024 20:25:33 +0100 Subject: [PATCH] Container::getControls() returns list instead of iterator with names (BC break) --- src/Forms/Container.php | 7 ++++--- tests/Forms/Container.getControls().phpt | 20 +------------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/src/Forms/Container.php b/src/Forms/Container.php index 2014c6f89..f29feb859 100644 --- a/src/Forms/Container.php +++ b/src/Forms/Container.php @@ -301,11 +301,12 @@ public function addComponent( /** - * Iterates over all form controls. + * Retrieves the entire hierarchy of form controls including nested. + * @return list */ - public function getControls(): \Iterator + public function getControls(): array { - return $this->getComponents(true, Control::class); + return array_values(array_filter($this->getComponentTree(), fn($c) => $c instanceof Control)); } diff --git a/tests/Forms/Container.getControls().phpt b/tests/Forms/Container.getControls().phpt index 5c4d2bef0..3c605a6ef 100644 --- a/tests/Forms/Container.getControls().phpt +++ b/tests/Forms/Container.getControls().phpt @@ -15,22 +15,4 @@ $form->addContainer('cont') ->addText('name'); $controls = $form->getControls(); - -$names = $values = []; -foreach ($controls as $name => $value) { - $names[] = $name; - $values[] = $value; -} - -Assert::same(['name', 'age', 'name'], $names); -Assert::same([$form['name'], $form['age'], $form['cont-name']], $values); - -// again -$names = $values = []; -foreach ($controls as $name => $value) { - $names[] = $name; - $values[] = $value; -} - -Assert::same(['name', 'age', 'name'], $names); -Assert::same([$form['name'], $form['age'], $form['cont-name']], $values); +Assert::same([$form['name'], $form['age'], $form['cont-name']], $controls);