Drupal 8에서 기본적으로 사용자 정의 필드 셋을 축소하는 방법


13

Drupal 7에는 필드 세트를 축소 가능하게하고이 양식 요소의 기본 상태 (축소 또는 축소되지 않음)를 제한하는 옵션이있었습니다. 예:

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

이제, 드루팔 8 나는 attributtes 찾을 수 #collapsible#collapsed의를 Drupal\Core\Render\Element\Fieldset. Fieldset 요소의 공식 문서에는 Fieldset 요소를 대체 해야하는 새로운 요소가 언급되어 있지 않습니다.

또한 Drupal 7과 같이 Drupal 8에 대한 Form API 요소 개요 는 없습니다 . 코드에서 모든 렌더 요소 정의를 수동으로 검색해야하므로 시간이 많이 걸립니다 (특히 요소 개요를보고 비교하려는 경우). .

답변:


26

모든 축소 가능한 필드 세트가 HTML5 세부 사항 요소로 대체되었습니다.

Fieldset과 legand는 스타일이 매우 어렵 기 때문에 Drupal 8에서 더 이상 사용하지 않는 것이 좋습니다. 대신 HTML5 세부 정보 및 요약 태그 인 더 많은 크로스 브라우저 방식으로 대체되었습니다.

'#type' => 'details'

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

드루팔 7

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

드루팔 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
변경 기록은 Druapl 8에서 X가 어떻게 바뀌 었는지 확인할 수있는 완벽한 장소입니다. 쉽게 검색 할 수 있으며 항상 이전 / 이후 예제를 포함합니다. 코드와 문서는 대부분 사람들의 자유 시간에 작성됩니다. 불평하지 말고 개선하십시오.
Berdir

@ Berdir 예, 자유 시간으로 작성된 문서를 알고 있음을 알고 있습니다. :) 개인적으로 생각하지 않습니다. 변경 기록은 쉽게 검색 할 수 있습니다 (Google 제외). 기본적으로 개발자는 문서 (또는 API 문서)를 검색하므로 특정 변경 레코드에 대한 간단한 링크 참조만으로도 충분합니다 (변경 레코드에 해당 예제를 작성하는 것만 큼 시간이 걸리지 않습니다). 그 외에도 변경 레코드의 코드 예제가 매우 우수하다는 것을 인정해야합니다.
Juraj Nemec

drupal 8 파일에서이 코드를 어디에 광고합니까?
DavSev

0

HTML 설명을 저장하기 위해 HereDoc 표기법을 사용하는 예제 :

$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.
);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.