Skip to content

Commit 746fae0

Browse files
committed
Fix nested validation #13
1 parent 38454ec commit 746fae0

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/Extension/Validation/ValidationListener.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,27 +77,29 @@ public function validateRules(FormEvent $event)
7777
* @param array $rules
7878
* @return array
7979
*/
80-
protected function findRules(FormInterface $parent, $rules = [])
80+
protected function findRules(FormInterface $parent, $rules = [], $parentName = null)
8181
{
8282
foreach ($parent->all() as $form) {
8383
$config = $form->getConfig();
8484
$name = $form->getName();
8585
$innerType = $form->getConfig()->getType()->getInnerType();
8686

8787
if ($config->hasOption('rules')) {
88-
if ($innerType instanceof CollectionType) {
89-
$name .= '.*';
90-
}
9188

92-
if (! $parent->isRoot()) {
89+
if ($parentName !== null) {
90+
$name = $parentName . '.' . $name;
91+
} elseif (! $parent->isRoot()) {
9392
$name = $parent->getName() . '.' . $name;
9493
}
9594

9695
$rules[$name] = $this->addTypeRules($innerType, $config->getOption('rules'));
9796
}
9897

9998
if ($innerType instanceof CollectionType) {
100-
$rules = $this->findRules($form, $rules);
99+
$children = $form->all();
100+
if(isset($children[0])) {
101+
$rules = $this->findRules($children[0], $rules, $name . '.*');
102+
}
101103
}
102104
}
103105

0 commit comments

Comments
 (0)