如何在Drupal 8中默认使自定义字段集折叠


13

在Drupal 7中,可以选择是否使字段集可折叠,并限制此表单元素的默认状态(折叠或未折叠)。例:

$form['contact_data'] = array(
        '#title' => t("Contact data"),
        '#type' => 'fieldset',
        '#collapsible' => TRUE,
        '#collapsed' => FALSE,
);

现在,在Drupal 8中我找不到属性#collapsible#collapsed在中Drupal\Core\Render\Element\Fieldset。在Fieldset元素的官方文档中未提及任何新元素,这些新元素应替代Fieldset元素。

此外,还没有Drupal 8的Form API元素概述(例如Drupal 7)。您必须在代码中手动搜索所有Render Elements定义,这比较耗时(尤其是当您希望查看元素概述并进行比较时) 。

Answers:


26

所有可折叠字段集都已替换为HTML5 details元素。

Fieldset和Legand很难设置样式,因此不建议再与Drupal 8一起使用。取而代之的是,它被更多的跨浏览器方式所取代,即HTML5详细信息和摘要标签。

'#type' => 'details'

https://www.drupal.org/node/1852020

Drupal 7

$form['advanced'] = array(
  '#type' => 'fieldset',
  '#title' => t('Advanced settings'),
  '#collapsible' => TRUE,
  '#collapsed' => FALSE,
  '#description' => t('Lorem ipsum.'),
);

Drupal 8

$form['advanced'] = array(
  '#type' => 'details',
  '#title' => t('Advanced settings'),
  '#description' => t('Lorem ipsum.'),
  '#open' => TRUE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
);

2
谢谢您的回答。但是,再次让我感到沮丧的是,这个(不小的)更改仅在某些“更改记录”页面上进行了描述,而未更新到官方文档页面上。请参阅: Online documentation: Not done...
Juraj Nemec

1
更改记录是查找X在Druapl 8中的变化方式的理想场所。它们易于搜索,并且始终包含示例之前/之后。代码和文档大部分都是在人们的空闲时间编写的。不要抱怨,帮助改善它。
贝尔迪尔

@Berdir是的,我知道可以用空闲时间编写文档,也很感激:)但我个人认为,变更记录很容易搜索(来自Google除外)。首先,作为开发人员,您可以搜索文档(或API文档),因此只需指向特定变更记录的简单链接引用就足够了(并且不像在变更记录中编写这些示例那样耗时)。除此之外,我必须承认,变更记录中的代码示例非常好。
朱拉·尼梅克

您在drupal 8文件中的哪里投放此代码?
DavSev

0

使用HereDoc表示法存储HTML说明的示例:

$desc_html = <<<HTML
<p>
  <strong>Put the HTML to be displayed when open in here.</strong>
<p>
HTML;

$form['advanced'] = array(
  '#type' => 'details',
  '#title' => t('Advanced settings'),
  '#description' => t($desc_html),
  '#open' => TRUE, // Controls the HTML5 'open' attribute. Defaults to FALSE.
);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.