Como tornar o conjunto de campos personalizado recolhido por padrão no Drupal 8


12

No Drupal 7, havia a opção de ter o conjunto de campos recolhível ou não e restringir o estado padrão deste elemento do formulário (recolhido ou não recolhido). Exemplo:

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

Agora, no Drupal 8, não consigo encontrar atributos #collapsiblee #collapsedem Drupal\Core\Render\Element\Fieldset. Na documentação oficial do elemento Fieldset não é mencionado nenhum elemento novo, que deve substituir o elemento Fieldset.

Também não há uma visão geral dos elementos da API de formulários para o Drupal 8, como para o Drupal 7. É necessário procurar manualmente todas as definições de Render Elements no código, o que consome mais tempo (especialmente quando você deseja ver a visão geral dos elementos e compará-los) .

Respostas:


25

Todos os conjuntos de campos recolhíveis foram substituídos pelos elementos de detalhes HTML5.

Fieldset e legand são muito difíceis de estilizar e não é mais recomendado o uso com o Drupal 8. Em vez disso, ela foi substituída por uma maneira mais cruzada, que são as tags Detalhes e Resumo do 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
Obrigado pela resposta. Mas, novamente, estou muito frustrado com o fato de que essa alteração (não pequena) é descrita apenas em uma página "registro de alterações" e não é atualizada para as páginas oficiais da documentação ... Veja: Online documentation: Not done...
Juraj Nemec

1
Os registros de alterações são o local perfeito para procurar como as coisas X mudaram no Druapl 8. Elas são facilmente pesquisáveis ​​e sempre contêm exemplos antes / depois. Tanto o código quanto a documentação são escritos principalmente no tempo livre das pessoas. Não reclame, ajude a melhorá-lo.
Berdir

@ Berdir Sim, eu sei que a documentação está escrita em tempo livre e eu aprecio isso :) Mas, pessoalmente, não acho que os registros de alterações sejam facilmente pesquisáveis ​​(exceto no google). Primário, como desenvolvedor, você pesquisa na documentação (ou na documentação da API), portanto, basta uma simples referência de link a um registro de alteração específico (e não é tão demorado quanto escrever esses exemplos nos registros de alteração). Além disso, devo admitir, que os exemplos de código nos registros de alterações são muito bons.
Juraj Nemec #

Onde você adita esse código nos arquivos drupal 8?
DavSev 9/10

0

Exemplo usando a notação HereDoc para armazenar a Descrição 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.
);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.