Skip to content
Snippets Groups Projects
Commit d5c416ae authored by mxh's avatar mxh Committed by Jürgen Haas
Browse files

Issue #3310558 by mxh, antiden, jurgenhaas: How to set option in Book Outline...

Issue #3310558 by mxh, antiden, jurgenhaas: How to set option in Book Outline after Create or Update node
parent d1a8531f
No related branches found
No related tags found
1 merge request!235Issue #3310558: How to set option in Book Outline after Create or Update node
......@@ -186,8 +186,35 @@ trait FormFieldPluginTrait {
$key = array_pop($name_array);
foreach ($this->lookupFormElements($form, $key) as &$element) {
if (empty($name_array) || (isset($element['#parents']) && array_intersect($name_array, $element['#parents']) === $name_array) || (isset($element['#array_parents']) && array_intersect($name_array, $element['#array_parents']) === $name_array)) {
// Found the element due to defined parents or array_parents.
return $element;
}
if (empty($name_array)) {
continue;
}
// For early form builds, parents and array_parents may not be available.
// For such a case, have another deep look into the render array.
$lookup = NULL;
$parents = [];
$lookup = static function (array &$elements, array &$name_array) use (&$lookup, &$parents) {
if ($parent = &NestedArray::getValue($elements, $name_array)) {
$parents[] = &$parent;
}
else {
foreach (Element::children($elements) as $c_key) {
$lookup($elements[$c_key], $name_array);
}
}
};
$lookup($form, $name_array);
foreach ($parents as &$parent) {
if (isset($parent[$key]) && ($parent[$key] === $element)) {
return $element;
}
}
unset($parent);
}
// Although not officially supported, try to get a target element using
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment