Încerc să fac un plugin de câmp de vizualizări care să-mi ofere unele funcționalități suplimentare unui câmp. Am probleme cu el.
Am un tip de entitate numit lms_request. Are numeroase pachete în interior.
Când utilizați „pluginul câmpului de vizualizare” personalizat pe o vizualizare care filtrează în mod specific un singur pachet, funcționează bine.
Când încerc să folosesc același câmp într-o vizualizare care are mai multe pachete filtrate sau niciun pachet filtrat (pentru a le afișa pe toate), apare o eroare care mă împiedică să redau vizualizarea. Eroarea pe care o scuipă este următoarea:
Notă: Index nedefinit: modificați în Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender()
precum și Eroare: tipuri de operanzi neacceptate în Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender()
Dacă intru în definiția fieldplugin-ului și setez override defineOptions
funcția public defineOptions() {
returnează părinte::defineOptions();
}
Primesc urmatoarele in dblog (de 3 ori)
Notă: Încercarea de a accesa offset de matrice pe valoarea de tip null în Drupal\views\Plugin\views\field\FieldPluginBase->defineOptions()
Sunt confuz de ce atunci când filtrez pe un singur pachet funcționează așa cum era de așteptat, dar de îndată ce scot filtrul sau setez filtrul la mai multe pachete, rupe câmpul.
Hook_views_data() meu arată astfel:
funcția lms_request_views_data() {
$data['lms_request']['request_system_quick_edit'] = [
'title' => t('Solicitare de editare rapidă'),
'help' => t('Formular de solicitare de editare rapidă'),
'câmp' => [
'id' => 'request_system_quick_edit',
],
];
returnează $date;
}
Unde ca „request_system_quick_edit” este numele pluginului de câmp personalizat pe care l-am creat.
Codul pluginului de câmp arată astfel:
<?php
spațiu de nume Drupal\request_system\Plugin\views\field;
utilizați Drupal\views\Plugin\views\field\FieldPluginBase;
utilizați Drupal\views\ResultRow;
utilizați Drupal\Core\Form\FormStateInterface;
utilizați Drupal\Core\Url;
/**
* Oferă un handler de câmp de editare rapidă.
*
* @ViewsField("request_system_quick_edit")
*
* @DCG
* Pluginul trebuie să fie atribuit unei anumite coloane de tabel prin
* hook_views_data() sau hook_views_data_alter().
* Pentru coloanele inexistente (adică câmpuri calculate) trebuie să înlocuiți
* metoda self::query().
*/
clasa QuickEdit extinde FieldPluginBase {
$stocare protejată;
protejat $taxonomie;
protejat $library_item;
/**
* {@inheritdoc}
*/
funcție publică __construct() {
$this->storage = \Drupal::entityTypeManager()->getStorage('lms_request');
$this->taxonomie = \Drupal::entityTypeManager()->getStorage('taxonomy_term');
$this->library_item = \Drupal::entityTypeManager()->getStorage('item_type');
}
/**
* {@inheritdoc}
*/
interogare de funcție publică () {
}
// /**
// * {@inheritdoc}
// */
funcția protejată defineOptions() {
parent::defineOptions();
}
// /**
// * {@inheritdoc}
// */
funcția publică buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
}
/**
* {@inheritdoc}
*/
funcția publică randare (ResultRow $valori) {
$build['output']['#markup'] = 'Testează';
returnează $build;
}
}
În plus, atunci când adăugați câmpul, eticheta și grupul apar corect, dar odată ce câmpul este în vizualizare, apare un :
în loc de Grup: Nume câmp
Orice ajutor ar fi foarte apreciat.