function entity_browser_entity_form_inline_entity_form_reference_form_alter in Entity Browser 8.2
Same name and namespace in other branches
- 8 modules/entity_form/entity_browser_entity_form.module \entity_browser_entity_form_inline_entity_form_reference_form_alter()
Implements hook_inline_entity_form_reference_form_alter().
File
- modules/
entity_form/ entity_browser_entity_form.module, line 22 - Hook implementations for entity_browser_entity_form.module.
Code
function entity_browser_entity_form_inline_entity_form_reference_form_alter(&$reference_form, FormStateInterface &$form_state) {
/** @var \Drupal\field\FieldConfigInterface $instance */
$instance = $form_state
->get([
'inline_entity_form',
$reference_form['#ief_id'],
'instance',
]);
/** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */
$entity_form_id = $instance
->getTargetEntityTypeId() . '.' . $instance
->getTargetBundle() . '.default';
// TODO - 'default' might become configurable or something else in the future.
// See https://www.drupal.org/node/2510274
$form_display = \Drupal::entityTypeManager()
->getStorage('entity_form_display')
->load($entity_form_id);
$widget = $form_display
->getRenderer($instance
->getName());
$entity_browser_id = $widget
->getThirdPartySetting('entity_browser_entity_form', 'entity_browser_id', '_none');
if ($entity_browser_id === '_none') {
return;
}
// Fetch the number of currently selected entities, if any.
$count_existing_selection = count($form_state
->get([
'inline_entity_form',
$reference_form['#ief_id'],
'entities',
]));
$cardinality = FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED;
if ($instance
->getFieldStorageDefinition()
->get('cardinality') !== $cardinality) {
$cardinality = $instance
->getFieldStorageDefinition()
->get('cardinality') - $count_existing_selection;
}
$bundles = $reference_form['entity_id']['#selection_settings']['target_bundles'];
$target_entity_type = $reference_form['entity_id']['#target_type'];
unset($reference_form['entity_id']);
$reference_form['entity_browser'] = [
'#type' => 'entity_browser',
'#entity_browser' => $entity_browser_id,
'#cardinality' => $cardinality,
'#entity_browser_validators' => [
'entity_type' => [
'type' => $target_entity_type,
],
],
'#widget_context' => [
'target_bundles' => $bundles,
'target_entity_type' => $target_entity_type,
'cardinality' => $cardinality,
],
];
$reference_form['#attached']['library'][] = 'entity_browser_entity_form/ief_autocomplete';
$reference_form['actions']['ief_reference_save']['#ajax']['event'] = 'entities-selected';
// Add custom validation and submit callbacks as we need to handle
// multi-value cases.
$reference_form['#element_validate'][0] = 'entity_browser_entity_form_reference_form_validate';
$reference_form['#ief_element_submit'][0] = 'entity_browser_entity_form_reference_form_submit';
}