it-swarm.com.de

form_alter: Inline-Entitätsformular

Ich verwende IEF und alles ist in Ordnung ... bis ich versuche, hook_form_alter () zu implementieren und wenn ich über die IEF-Benutzeroberfläche auf das Formular zugreife (im Gegensatz zum direkten Ändern der Entität), scheint keine der von mir vorgenommenen Änderungen wirksam zu werden.

Ich sehe, dass alles auf einem Ajax/System gepostet und beim Zusammenstellen des Formulars abgerufen wird ...

Ist es nicht möglich, Formularelemente wie beim direkten Einbinden vor dem IEF auszublenden?

Irgendwelche Ideen?

Jede Werbebuchung hat ein Preisfeld, das ich iterieren und summieren und auf den Wurzelknoten anwenden muss. Da dieses Modul im Handel verwendet wurde, wäre dies Standard.

7
Alex.Barylski

IEF hat einen Hook, wie in der Datei inline_entity_form.api.php beschrieben.

/**
 * Perform alterations before an entity form is included in the IEF widget.
 *
 * @param $entity_form
 *   Nested array of form elements that comprise the entity form.
 * @param $form_state
 *   The form state of the parent form.
 */
function hook_inline_entity_form_entity_form_alter(&$entity_form, &$form_state) {
  if ($entity_form['#entity_type'] == 'commerce_line_item') {
    $entity_form['quantity']['#description'] = t('New quantity description.');
  }
}

Überprüfen Sie die Datei inline_entity_form.api.php , da möglicherweise einige Hooks verwendet werden können.

19
2pha

Schauen Sie sich auch hook_field_widget_WIDGET_TYPE_form_alter () an

/**
 * Implements hook_field_widget_WIDGET_TYPE_form_alter().
 */
function MY_MODULE_field_widget_inline_entity_form_form_alter(&$element, &$form_state, $context) {
  // Move the Add Existing button to the left of the Add New button.
  if (isset($element['actions']['ief_add_existing'])) {
    $element['actions']['ief_add_existing']['#weight'] = -50;
  }
}
3
scotself