hook_add_form()
はパラメーターとして_$entity_type
_および_$entity
_を取得しますが、hook_form_alter()
にはこれらのパラメーターはありません。
hook_form_alter()
in Drupal 7)でエンティティタイプとエンティティオブジェクトを取得するにはどうすればよいですか?
このようなことができるといいと思います。
if ($form_state->getFormObject() instanceof \Drupal\Core\Entity\EntityFormInterface) {
$entity = $form_state->getFormObject()->getEntity();
$entity_type = $entity->bundle();
}
更新:Drupal 7では、次のように実行する必要があります。
$node = $form['#entity_type']; // E.g this could be, (#node, #user etc.)
このサイトを見てみましょう 重複議論 。
エンティティタイプはそれぞれD7で独自のフォームを実装しましたが、一般的なものはありませんでした。あなたは、コードの各ビットの作者がその時に決定したものに翻弄されています。
たとえば、コアエンティティタイプのsomeとの整合性を見つけることができます。
$form['#node']
$form['#user']
$form['#comment']
しかし、すべてではありません。
$form['#term']
興味のある特定の種類のエンティティをターゲットにして、それぞれの正しい配列キーを決定し、後でアクセスできるようにマップに格納する方が簡単な場合があります。