From fcec026dff8fa7ee6c54aceda184c9721b7c0f78 Mon Sep 17 00:00:00 2001 From: Luke Towers Date: Sun, 26 Aug 2018 12:29:37 -0600 Subject: [PATCH] Add support for checking if nested form fields are required for visual indicator --- modules/backend/widgets/Form.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modules/backend/widgets/Form.php b/modules/backend/widgets/Form.php index 4c0fffd32..01e96f23f 100644 --- a/modules/backend/widgets/Form.php +++ b/modules/backend/widgets/Form.php @@ -837,6 +837,24 @@ class Form extends WidgetBase */ if ($field->required === null && $this->model && method_exists($this->model, 'isAttributeRequired')) { $fieldName = implode('.', HtmlHelper::nameToArray($field->fieldName)); + + // Check nested fields + if ($this->isNested) { + // Get the current attribute level + $nameArray = HtmlHelper::nameToArray($this->arrayName); + unset($nameArray[0]); + + // Convert any numeric indexes to wildcards + foreach ($nameArray as $i => $value) { + if (preg_match('/^[0-9]*$/', $value)) { + $nameArray[$i] = '*'; + } + } + + // Recombine names for full attribute name in rules array + $fieldName = implode('.', $nameArray) . ".{$fieldName}"; + } + $field->required = $this->model->isAttributeRequired($fieldName); }