web-dev-qa-db-ja.com

フォームフックaltを使用して、インラインエンティティフォームのフィールドを編集するにはどうすればよいですか?

私はhook_form_alterを使用して、コマース製品の表示ノードのインラインエンティティフォームのフィールドを変更しようとしています。

通常のフィールドの編集方法は知っていますが、エンティティフォームフィールドでは機能しません。価格フィールドのラベルを変更するなど、フィールドを編集するにはどうすればよいですか?

ありがとう、ロバート

6
user1038925

IEFの API docs に従って、次のものが得られます。

  • hook_inline_entity_form_entity_form_alter()

    エンティティフォームがIEFウィジェットに含まれる前に変更を実行します。

  • hook_inline_entity_form_reference_form_alter()

    参照フォームがIEFウィジェットに含まれる前に変更を実行します。

    参照フォームは、オートコンプリートフィールドを通じて既存のエンティティを追加するために使用されます

  • hook_inline_entity_form_table_fields_alter()

    IEFテーブルでエンティティを表すために使用されるフィールドを変更します。

    フィールドは、フィールドAPIフィールドまたはhook_entity_property_info()で定義されたプロパティのいずれかです。

私は最初のものがここで最も適切だと思います、おそらく次のようなものです(ここで配列キーを推測すると、それらは異なるかもしれません):

function MYMODULE_inline_entity_form_entity_form_alter(&$entity_form, &$form_state) {
  if ($entity_form['#entity_type'] == 'commerce_product') {
    $entity_form['commerce_price']['#title'] = t('New title.');
  }
}
8
Clive