APIv4 - Pass form values to autocomplete field
authorcolemanw <coleman@civicrm.org>
Sun, 3 Dec 2023 18:03:05 +0000 (18:03 +0000)
committercolemanw <coleman@civicrm.org>
Sun, 3 Dec 2023 19:36:42 +0000 (19:36 +0000)
Civi/Api4/Generic/AutocompleteAction.php
ext/afform/core/ang/af/fields/EntityRef.html

index 183043e3a851a063f218e0f6bc2f6d627c8896fd..cd80283b96e2bcf789269cf29395c026d1abed5a 100644 (file)
@@ -36,6 +36,7 @@ use Civi\Core\Event\GenericHookEvent;
  */
 class AutocompleteAction extends AbstractAction {
   use Traits\SavedSearchInspectorTrait;
+  use Traits\GetSetValueTrait;
 
   /**
    * Autocomplete search input for search mode
@@ -88,6 +89,17 @@ class AutocompleteAction extends AbstractAction {
    */
   protected $key;
 
+  /**
+   * Known entity values.
+   *
+   * Value will be populated by the form based on data entered at the time.
+   * They can be used by hooks for contextual filtering.
+   *
+   * Format: [fieldName => value][]
+   * @var array
+   */
+  protected $values = [];
+
   /**
    * Search conditions that will be automatically added to the WHERE or HAVING clauses
    *
index cd415943b9784fd369e8e2828af6c6c43e61e917..28bd70cf829121b0053eca8167b4abde99b79938 100644 (file)
@@ -5,7 +5,7 @@
        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.getName() + ':' + $ctrl.fieldName}"
+       crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.getName() + ':' + $ctrl.fieldName, values: dataProvider.getFieldData()}"
        multi="$ctrl.defn.input_attrs.multiple"
        auto-open="$ctrl.defn.input_attrs.autoOpen"
        quick-add="$ctrl.defn.input_attrs.quickAdd"