如何在默认情况下隐藏drupal8表单元素



我正在尝试做一些在drupal中应该非常容易的事情。我只想在默认情况下在drupal管理员中简单地隐藏一个表单字段。

禁用字段根本不起作用。我找不到任何相关文件。令人难以置信的是,在Drupal中做这么简单的事情竟然如此困难。

$form['field_name']['#states'] = [
  'visible' => [
    ':input[name="field_foo[0][target_id]"]' => ['value' => 'blah'],
  ],
  'invisible' => true,
];

可见部分工作。如果另一个字段具有某个值,则显示表单元素。

但是,当您添加新节点时,我根本无法让它在默认情况下隐藏此字段。

简单且不影响默认值(如果设置了默认值(:

$form['field_name']['#attributes']['class'][] = 'hidden';

Drupal核心将";显示:无"这个元素来自使用'hidden'css类的核心样式。

添加到表单元素数组$element=['#access'=>FALSE,]:

$form['field_name'] = [ 
  '#access' => FALSE,
]

您不需要设置不可见,除非满足可见条件,否则默认情况下它将被隐藏。此外,输入看起来是错误的,因为它应该是条件所基于的元素中设置的名称属性

drupal.org文档中有一个例子。

例如

$form['field_name']['#states'] = [
  'visible' => [
    ':input[name="field_conditional_on"]' => ['value' => 'value_conditional_on'],
  ],
];

或者,如果你只想使用CSS的display属性来隐藏它,你可以使用下面的

$form['field_name']['#states'] = [
  '#attributes' => array('style' => array('display: none;')),
 ];

最新更新