From 0dcd942cdc397fc5f08d6741dd30c873180e4331 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 28 Feb 2021 22:53:11 -0500 Subject: [PATCH] APIv4 - Rename 'controlField' property to 'control_field' for consistency By convention, all keys returned from the api should be lowercase. --- Civi/Api4/Generic/AbstractAction.php | 2 +- Civi/Api4/Service/Spec/SpecFormatter.php | 8 ++++++++ ext/afform/core/ang/af/afField.component.js | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Civi/Api4/Generic/AbstractAction.php b/Civi/Api4/Generic/AbstractAction.php index 8ac54c5774..2103f319c2 100644 --- a/Civi/Api4/Generic/AbstractAction.php +++ b/Civi/Api4/Generic/AbstractAction.php @@ -498,7 +498,7 @@ abstract class AbstractAction implements \ArrayAccess { 'val' => $record[$expr], 'field' => $field, 'suffix' => substr($expr, $suffix + 1), - 'depends' => $field['input_attrs']['controlField'] ?? NULL, + 'depends' => $field['input_attrs']['control_field'] ?? NULL, ]; unset($record[$expr]); } diff --git a/Civi/Api4/Service/Spec/SpecFormatter.php b/Civi/Api4/Service/Spec/SpecFormatter.php index a860e60b0b..dad0c20caa 100644 --- a/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/Civi/Api4/Service/Spec/SpecFormatter.php @@ -172,6 +172,14 @@ class SpecFormatter { } } } + // Ensure all keys use lower_case not camelCase + foreach ($inputAttrs as $key => $val) { + if ($key !== strtolower($key)) { + unset($inputAttrs[$key]); + $key = strtolower(preg_replace('/(?=[A-Z])/', '_$0', $key)); + $inputAttrs[$key] = $val; + } + } $fieldSpec ->setInputType($inputType) ->setInputAttrs($inputAttrs); diff --git a/ext/afform/core/ang/af/afField.component.js b/ext/afform/core/ang/af/afField.component.js index 385038294f..439f3ddcfe 100644 --- a/ext/afform/core/ang/af/afField.component.js +++ b/ext/afform/core/ang/af/afField.component.js @@ -45,7 +45,7 @@ // ChainSelect - watch control field & reload options as needed if (ctrl.defn.input_type === 'ChainSelect') { - $scope.$watch('dataProvider.getFieldData()[defn.input_attrs.controlField]', function(val) { + $scope.$watch('dataProvider.getFieldData()[defn.input_attrs.control_field]', function(val) { if (val) { var params = { where: [['name', '=', ctrl.fieldName]], @@ -53,7 +53,7 @@ loadOptions: ['id', 'label'], values: {} }; - params.values[ctrl.defn.input_attrs.controlField] = val; + params.values[ctrl.defn.input_attrs.control_field] = val; crmApi4($scope.dataProvider.getEntityType(), 'getFields', params, 0) .then(function(data) { ctrl.defn.options = data.options; -- 2.25.1