Cách làm cho trường tùy chỉnh được thu gọn theo mặc định trong Drupal 8


12

Trong Drupal 7, có tùy chọn có thể thu gọn trường hoặc không, và để hạn chế trạng thái mặc định của phần tử biểu mẫu này (được thu gọn hoặc không được đánh dấu). Thí dụ:

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

Bây giờ, trong Drupal 8, tôi không thể tìm thấy attributtes #collapsible#collapsedin Drupal\Core\Render\Element\Fieldset. Trong tài liệu chính thức của phần tử Fieldset không được đề cập đến bất kỳ phần tử mới nào, phần tử này sẽ thay thế phần tử Fieldset.

Ngoài ra, không có tổng quan về các thành phần API Form cho Drupal 8, chẳng hạn như Drupal 7. Bạn phải tìm kiếm thủ công tất cả định nghĩa Render Elements trong mã, việc này tốn nhiều thời gian hơn (đặc biệt là khi bạn muốn xem tổng quan về các thành phần và so sánh chúng) .

Câu trả lời:


25

Tất cả các trường đóng mở đã được thay thế bằng các yếu tố chi tiết HTML5.

Fieldset và legand rất khó tạo kiểu và không nên sử dụng với Drupal 8 nữa. Thay vào đó, nó được thay thế bằng nhiều trình duyệt chéo hơn, đó là các thẻ Tóm tắt & Chi tiết 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
Cảm ơn bạn đã trả lời. Nhưng một lần nữa, tôi rất thất vọng vì thực tế là sự thay đổi (không nhỏ) này chỉ được mô tả trên một số trang "hồ sơ thay đổi" và không được cập nhật lên các trang tài liệu chính thức ... Xem: Online documentation: Not done...
Juraj Nemec

1
Các bản ghi thay đổi là nơi hoàn hảo để tìm kiếm cách X thay đổi trong Druapl 8. Chúng dễ dàng tìm kiếm và luôn chứa các ví dụ trước / sau. Cả mã và tài liệu chủ yếu được viết trong thời gian rảnh của mọi người. Đừng phàn nàn, hãy giúp cải thiện nó.
Berdir

@Berdir Vâng, tôi biết rằng tài liệu đó được viết trong thời gian rảnh và tôi đánh giá cao điều đó :) Nhưng cá nhân tôi không nghĩ rằng hồ sơ thay đổi đó có thể dễ dàng tìm kiếm (ngoại trừ từ google). Chính, với tư cách là nhà phát triển, bạn tìm kiếm trong tài liệu (hoặc tài liệu API), vì vậy chỉ cần tham chiếu liên kết đơn giản đến hồ sơ thay đổi cụ thể là đủ (và sẽ không tốn thời gian như viết các ví dụ đó trong hồ sơ thay đổi). Ngoài ra, tôi phải thừa nhận rằng các ví dụ mã trong hồ sơ thay đổi là rất tốt.
Juraj Nemec

Nơi nào bạn quảng cáo mã này trong 8 tập tin drupal?
DavSev

0

Ví dụ sử dụng ký hiệu HereDoc để lưu trữ Mô tả 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.
);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.