function inline_entity_form_entity_form in Inline Entity Form 7
Wraps and returns the entity form provided by the passed-in controller.
Parameters
$controller: The inline entity form controller.
$entity_form: The form array that will receive the entity form.
$form_state: The form state of the parent form.
Return value
The form array containing the embedded entity form.
1 call to inline_entity_form_entity_form()
- inline_entity_form_field_widget_form in ./
inline_entity_form.module - Implements hook_field_widget_form().
File
- ./
inline_entity_form.module, line 859 - Provides a widget for inline management (creation, modification, removal) of referenced entities. The primary use case is the parent -> children one (for example, order -> line items), where the child entities are never managed outside the…
Code
function inline_entity_form_entity_form($controller, $entity_form, &$form_state) {
$labels = $controller
->labels();
// Build a deta suffix that's appended to button #name keys for uniqueness.
$delta = $entity_form['#ief_id'];
if ($entity_form['#op'] == 'edit') {
$delta .= '-' . $entity_form['#ief_row_delta'];
$save_label = t('Update @type_singular', array(
'@type_singular' => $labels['singular'],
));
}
elseif ($entity_form['#op'] == 'add') {
// Create a new entity that will be passed to the form.
$form_settings = $form_state['inline_entity_form'][$entity_form['#ief_id']]['form settings'];
$entity_form['#entity'] = inline_entity_form_create_entity($entity_form['#entity_type'], $form_settings['bundle'], $entity_form['#parent_language']);
$entity_form['#title'] = t('Add new @type_singular', array(
'@type_singular' => $labels['singular'],
));
$save_label = t('Create @type_singular', array(
'@type_singular' => $labels['singular'],
));
}
elseif ($entity_form['#op'] == 'clone') {
// Clone the entity.
$form_settings = $form_state['inline_entity_form'][$entity_form['#ief_id']]['form settings'];
$entity = $form_state['inline_entity_form'][$entity_form['#ief_id']]['entities'][$form_settings['source']]['entity'];
$entity_form['#entity'] = $controller
->createClone($entity);
$entity_form['#title'] = t('Clone @type_singular', array(
'@type_singular' => $labels['singular'],
));
$save_label = t('Clone @type_singular', array(
'@type_singular' => $labels['singular'],
));
}
// Retrieve the form provided by the controller.
$entity_form = $controller
->entityForm($entity_form, $form_state);
// Add the actions
$entity_form['actions'] = array(
'#type' => 'container',
'#weight' => 100,
);
$entity_form['actions']['ief_' . $entity_form['#op'] . '_save'] = array(
'#type' => 'submit',
'#value' => $save_label,
'#name' => 'ief-' . $entity_form['#op'] . '-submit-' . $delta,
'#limit_validation_errors' => array(
$entity_form['#parents'],
),
'#attributes' => array(
'class' => array(
'ief-entity-submit',
),
),
'#ajax' => array(
'callback' => 'inline_entity_form_get_element',
'wrapper' => 'inline-entity-form-' . $entity_form['#ief_id'],
),
);
$entity_form['actions']['ief_' . $entity_form['#op'] . '_cancel'] = array(
'#type' => 'submit',
'#value' => t('Cancel'),
'#name' => 'ief-' . $entity_form['#op'] . '-cancel-' . $delta,
'#limit_validation_errors' => array(),
'#ajax' => array(
'callback' => 'inline_entity_form_get_element',
'wrapper' => 'inline-entity-form-' . $entity_form['#ief_id'],
),
);
// Add the appropriate submit handlers and their related data.
if (in_array($entity_form['#op'], array(
'add',
'clone',
))) {
$entity_form['actions']['ief_' . $entity_form['#op'] . '_save']['#submit'] = array(
'inline_entity_form_trigger_submit',
'inline_entity_form_close_child_forms',
'inline_entity_form_close_form',
);
$entity_form['actions']['ief_' . $entity_form['#op'] . '_cancel']['#submit'] = array(
'inline_entity_form_close_child_forms',
'inline_entity_form_close_form',
'inline_entity_form_cleanup_form_state',
);
}
else {
$entity_form['actions']['ief_edit_save']['#ief_row_delta'] = $entity_form['#ief_row_delta'];
$entity_form['actions']['ief_edit_cancel']['#ief_row_delta'] = $entity_form['#ief_row_delta'];
$entity_form['actions']['ief_edit_save']['#submit'] = array(
'inline_entity_form_trigger_submit',
'inline_entity_form_close_child_forms',
'inline_entity_form_close_row_form',
);
$entity_form['actions']['ief_edit_cancel']['#submit'] = array(
'inline_entity_form_close_child_forms',
'inline_entity_form_close_row_form',
'inline_entity_form_cleanup_row_form_state',
);
}
$entity_form['#element_validate'][] = 'inline_entity_form_entity_form_validate';
$entity_form['#ief_element_submit'][] = 'inline_entity_form_entity_form_submit';
// Add the pre_render callback that powers the #fieldset form element key,
// which moves the element to the specified fieldset without modifying its
// position in $form_state['values'].
$entity_form['#pre_render'][] = 'inline_entity_form_pre_render_add_fieldset_markup';
// Allow other modules to alter the form.
drupal_alter('inline_entity_form_entity_form', $entity_form, $form_state);
return $entity_form;
}