フィールドグループ フィールドセットgroup_p_payment
をマシン名として。これをユーザーに基づいて非表示にしたい。私は次のコードを試しました:
$user = \Drupal::currentUser()->getRoles();
if(!in_array("Administrator", $user) || !in_array("administer", $user)) {
$form['group_p_payment']['#access'] = FALSE;
}
しかし、うまくいきませんでした。フィールドセットを非表示にするにはどうすればよいですか?
フィールドグループモジュールは、グループ化されたフィールドをフィールドセットとしてDrupal 8に保存しなくなりました。これは、プリレンダリング関数で使用される#fieldgroups
という配列に各グループのメタデータを保存します。
すべての子要素が表示されていない場合、モジュールのロジックはフィールドセットをレンダリングしません。したがって、すべての子要素を非表示にして、同じ効果を得ることができます。例えば:
foreach ($form['#fieldgroups']['group_p_payment']->children as $form_element_id) {
$form[$form_element_id]['#access'] = FALSE;
}
ネストされたグループがある場合、ロジックは変更する必要がありますが、アプローチは同じままです。