Puncte:0

Ajutor cu pluginul Views Field

drapel cn

Î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.

4uk4 avatar
drapel cn
Vizualizarea folosește agregarea? Dacă te uiți la câmpul calculat, de obicei vezi două lucruri, funcția goală query() și `public function usesGroupBy() { return FALSE; }`
Puncte:0
drapel rs

Cred că problema ar putea fi că trebuie să adăugați un tip pentru elementul matricei de randare:

funcția publică randare (ResultRow $valori) {
    $build['output'] = [
      '#type' => 'container',
      '#markup' => 'Testează',
    ];

    returnează $build;
}

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.