Am o vizualizare drupal care are un câmp multiselect în partea de sus. Pe baza selecției rândurilor grilei și a valorii câmpului cu selecție multiplă, se efectuează acțiuni specifice pe rândurile grilei. Totul se bazează pe modulul VBO. Vizualizarea arată ca mai jos:
Câmpul cu selecție multiplă este lista cu titlurile nodului unui anumit tip de conținut numit „level2”. Am luat titlul nodului „level2” și am creat acea selecție multiplă cu codul de mai jos:
// Interogați nodurile
$storage = Drupal::getContainer()->get('entity_type.manager')->getStorage('node');
$nids = $storage->getQuery();
// Adunați nodurile de Nivel 2 publicate și sortați după titlu
$nids = $nids->condition('tip', 'nivel2')
->condition('status', 1)
->sort('level2_title')
->execute();
// Dacă nu există noduri, treceți mai departe
dacă (!$nids) {
returnează FALSE;
}
// Începeți să construiți opțiunile pentru lista noastră de selecție
$opțiuni = [];
$noduri = $storage->loadMultiple($nids);
// Împingeți titlurile în lista selectată
foreach ($noduri ca $nod) {
$opțiuni[$nod->id()] = $nod->getTitle();
}
$form['exposed_input']['ka_types'] = [
'#type' => 'selectați',
'#options' => $opțiuni,
'#multiple' => TRUE,
'#title' => 'Publicați la activitățile cheie :',
];
array_unshift($form['#submit'], 'mymod_form_submit');
}
Atunci când efectuez o anumită activitate cu câmpul multiselect, în fișierul de acțiune citesc valoarea multiselectului ca:
$ka_selected = \Drupal::state()->get('ka_types');
Cu toate acestea, nu pot citi același câmp din grilă. făcând dpm($entity) și dpm($node) nu arată deloc acest câmp în grilă. Ajutor despre cum să citiți această valoare de câmp din grila de vizualizare?