Puncte:-2

Adăugarea listei de selectare la ieșirea tableselect

drapel pt

Încerc să adaug o listă de selectare la o ieșire de tabel, dar marcajul este redat ca text.

$header = [
  'col1' => t('COL1'),
  'col2' => t('COL2'),
];
$rânduri = [
  1 => [
    'col1' => 'rând-1-celula-1',
    'col2' => 'rând-1-celula-2',
  ],
  ['col1' => 'test'],
  ['col2' => 'test'],
  ['col1' => 'test'],
  2 => [
    'col1' => 'rând-2-celula-1',
    'col2' => $form['example_select'] = [
                  '#type' => 'selectați',
                  '#title' => $this->t('Selectați elementul'),
                  '#options' => [
                    '1' => $this->t('One'),
                    '2' => $this->t('Doi'),
                    '3' => $this->t('Trei'),
                  ],
                ]
  ],
];
$form['test'] = [
  '#type' => 'tableselect',
  '#header' => $header,
  '#options' => $rows,
];

introduceți descrierea imaginii aici

Am experimentat cu codul de mai sus în buildForm(array $form, FormStateInterface $form_state) funcția clasei mele de controler. Clasa redă un formular pentru o configurație personalizată în zona de administrare.

Poate cineva să mă ajute să înțeleg ce trebuie să fac, astfel încât lista mea de selecție să fie redată ca markup în loc de text?

Puncte:1
drapel fr

Câteva sfaturi generale: Nu atribuiți chei numerice precum 1 și 2 rândurilor dvs. - lăsați PHP să genereze cheile. Sau, dacă într-adevăr trebuie să vă setați propriile chei, atunci utilizați chei șir și dați FIECĂRUI rând o cheie.Ceea ce arătați mai sus are primul rând numerotat 1, apoi al doilea, al treilea și al patrulea rând nu au chei (deci PHP le va atribui secvențial 2, 3, 4), apoi dați celui de-al cincilea rând cheia 2 care suprascrie al doilea rând (care avea o cheie generată automat de 2) - astfel ajungi să ai patru rânduri chiar dacă ai vrut cinci. Atribuirea constantă a cheilor de rând de la început va evita astfel de probleme.

La fel, când faci așa ceva:

'col2' => $form['example_select'] = [ ... ]

adăugați un nou element de formular la formular în DOUA locuri - o dată în tabel și o dată în afara tabelului. Dacă aceasta este ceea ce intenționați, atunci declarați mai întâi elementul de formular în afara tabelului și utilizați doar variabila din interiorul tabelului.

Oricum, următoarele vor face ceea ce doriți:

$header = [
  'col1' => $this->t('COL1'),
  'col2' => $this->t('COL2'),
];
$rânduri = [];

$rânduri[] = [
  'col1' => 'rând-1-celula-1',
  'col2' => 'rând-1-celula-2',
];
$rânduri[] = [
  'col1' => 'rând-2-celula-1',
  'col2' => ['date' => [
    '#type' => 'selectați',
    '#title' => $this->t('Selectați elementul'),
    '#options' => [
      '1' => $this->t('One'),
      '2' => $this->t('Doi'),
      '3' => $this->t('Trei'),
    ],
  ]],
];

$form['test'] = [
  '#type' => 'tableselect',
  '#header' => $header,
  '#options' => $rows,
];
drapel pt
Wow! Eram mai obosit decât credeam. Îmi cer scuze pentru codul dezordonat.Eram obosit și mă grăbeam, ceea ce a dus la dezordinea stânjenitoare de coduri. Multumesc pentru raspuns. Este exact ceea ce aveam nevoie.

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.