web-dev-qa-db-ja.com

form_alter:インラインエンティティフォーム

私はIEFを使用しており、すべてが順調です... ad implement hook_form_alter()を試してみるまで、および(エンティティを直接変更するのではなく)IEF UIを介してフォームにアクセスしたときに、加えた変更が有効にならないようです。

すべてがajax /システムに投稿され、フォームをアセンブルするときにプルされるのがわかります...

直接フックするときのように、IEFからフォーム要素を非表示にすることはできませんか?

何か案は?

各ラインアイテムには、反復して合計し、ルートノードに適用する必要がある価格フィールドがあります。このモジュールが商取引で使用されたので、これは標準的な方法です。

7
Alex.Barylski

inline_entity_form.api.php ファイルで説明されているように、IEFにはフックがあります。

/**
 * 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.');
  }
}

inline_entity_form.api.php ファイルを確認してください。使用できるフックがいくつかあります。

19
2pha

また、hook_field_widget_WIDGET_TYPE_form_alter()も確認してください。

/**
 * 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