Fix loading fields for contact type blocks
authorColeman Watts <coleman@civicrm.org>
Sat, 4 Jan 2020 20:13:00 +0000 (15:13 -0500)
committerCiviCRM <info@civicrm.org>
Wed, 16 Sep 2020 02:13:21 +0000 (19:13 -0700)
ext/afform/core/afform.php

index 8502faeb120af166fc03c5d89f9ac5b2e55daf0c..ab90805ae04f2562bb393d3f88ec7b25fa791b88 100644 (file)
@@ -354,13 +354,17 @@ function afform_civicrm_alterAngular($angular) {
  * @throws API_Exception
  */
 function _af_fill_field_metadata($entityType, DOMElement $afField) {
-  $fieldName = $afField->getAttribute('name');
-  $getFields = civicrm_api4($entityType, 'getFields', [
+  $params = [
     'action' => 'create',
-    'where' => [['name', '=', $fieldName]],
+    'where' => [['name', '=', $afField->getAttribute('name')]],
     'select' => ['title', 'input_type', 'input_attrs', 'options'],
     'loadOptions' => TRUE,
-  ]);
+  ];
+  if (in_array($entityType, CRM_Contact_BAO_ContactType::basicTypes(TRUE))) {
+    $params['values'] = ['contact_type' => $entityType];
+    $entityType = 'Contact';
+  }
+  $getFields = civicrm_api4($entityType, 'getFields', $params);
   // Merge field definition data with whatever's already in the markup
   $deep = ['input_attrs'];
   foreach ($getFields as $fieldInfo) {