[$entityName, $joinEntity] = array_pad(explode('+', $entityName), 2, NULL);
$entity = $formDataModel->getEntity($entityName);
+ // If no model entity, it's a search display
+ if (!$entity) {
+ $searchDisplay = $formDataModel->getSearchDisplay($entityName);
+ $apiEntity = civicrm_api4('SavedSearch', 'get', ['where' => [['name', '=', $searchDisplay['searchName']]]])
+ ->first()['api_entity'] ?? NULL;
+ $formField = $searchDisplay['fields'][$fieldName]['defn'] ?? [];
+ }
// If using a join (e.g. Contact -> Email)
- if ($joinEntity) {
+ elseif ($joinEntity) {
$apiEntity = $joinEntity;
$isId = FALSE;
$formField = $entity['joins'][$joinEntity]['fields'][$fieldName]['defn'] ?? [];
// For the "Existing Entity" selector,
// Look up the "type" fields (e.g. contact_type, activity_type_id, case_type_id, etc)
// And apply it as a filter if specified on the form.
- if ($isId) {
+ if ($isId && $entity) {
if ($entity['type'] === 'Contact') {
$typeFields = ['contact_type', 'contact_sub_type'];
}
ng-model="getSetSelect"
ng-model-options="{getterSetter: true}"
crm-autocomplete="$ctrl.defn.fk_entity"
- crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.modelName + ':' + $ctrl.fieldName}"
+ crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName}"
multi="$ctrl.defn.input_attrs.multiple"
auto-open="$ctrl.defn.input_attrs.autoOpen"
placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}"