$arr['#children'] = $this->convertNodesToArray($node->childNodes);
}
}
+ // Empty containers should still get a #children attribute
+ elseif (in_array($node->tagName, ['div', 'fieldset'], TRUE)) {
+ $arr['#children'] = [];
+ }
return $arr;
}
elseif ($node instanceof DOMText) {
$this->assertArrayNotHasKey('base_module', $result);
}
+ public function testGetLayoutWithEmptyNode() {
+ Afform::create(FALSE)
+ ->addValue('name', $this->formName)
+ ->addValue('title', 'Test Form')
+ ->addValue('layout', '<af-form><af-entity name="a"></af-entity><div></div></af-form>')
+ ->execute();
+
+ $layout = Afform::get(FALSE)
+ ->addWhere('name', '=', $this->formName)
+ ->execute()->single()['layout'];
+
+ // Ensure container elements like <div> always have #children even if empty
+ $this->assertEquals([], $layout[0]['#children'][1]['#children']);
+ $this->assertArrayNotHasKey('#children', $layout[0]['#children'][0]);
+ }
+
public function testAfformAutocomplete(): void {
$title = uniqid();
Afform::create()