Puncte:-3

How to fill a form field of type fieldset with values from an array

drapel cn

How can I fill a formfield type fieldset with more than one markup value from an array?

foreach ($drugis_postgis_connection->tableNames() as $table) {
    $form['tables'] = [
      '#type' => 'fieldset',
      '#title' => $this->t('Tables'),
      '#markup' => $table, 
      '#collapsible' => TRUE, // Added
      '#collapsed' => FALSE,  // Added
  ];

I don't need more fields i want to markup all values from the array in the field. Actually there is only one value, from the array displayed.


Sorry if my question is not clear, i want something like this.

enter image description here

Puncte:0
drapel us

Dacă suprascrii $form['tables'] la fiecare iterație, vei ajunge doar cu una Mese pe formular. Fiecare element de pe $form trebuie să aibă un nume unic. Încearcă ceva de genul acesta:

foreach ($drugis_postgis_connection->tableNames() ca $key => $table) {

  $form['tabel' . $key] = [
    /** ... **/
  ];

}

Dacă doriți doar un set de câmpuri, atunci încercați ceva de genul acesta:

$tables = $drugis_postgis_connection->tableNames();
$form['tables'] = [
  /** ... **/
  '#markup' => implode('', $tables),
  /** ... **/
];
Steffen  avatar
drapel cn
Acest lucru funcționează bine, dar a creat pentru fiecare valoare un bloc propriu, vreau să enumerez toate tabelele într-un singur formular???
drapel us
Presupun că te referi la un set de câmpuri. Dacă este cazul, am actualizat răspunsul.
Puncte:0
drapel us

Codul afișat în întrebare nu funcționează din două motive.

  • The pentru fiecare bucla este anulată $form['tables'] de fiecare dată, cu efectul că $form['tables']['#markup'] conține doar ultimul nume de tabel găsit din $drugis_postgis_connection->tableNames()
  • A set de câmpuri elementul nu folosește #markup

Trebuie să utilizați un cod similar cu următorul.

$tables = $drugis_postgis_connection->tableNames();

$form['tables'] = [
  '#type' => 'fieldset',
  '#title' => $this->t('Tabele'),
  '#colapsible' => ADEVĂRAT,
  '#colapsed' => FALSE,
];

$form['tables']['list'] = [
  '#markup' => implode(',', $tables),
];

presupun $drugis_postgis_connection->tableNames() returnează o matrice de șiruri de caractere; in caz contrar, implode(',', $tablele) trebuie schimbat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.