Puncte:0

Cum se filtrează rezultatele entity_autocomplete după tipul de conținut și un câmp

drapel ng

Încerc să implementez un câmp de completare automată a unei entități într-un formular în care entitățile de completare automată sunt filtrate după tipul de conținut și un anumit câmp din acel tip de conținut.

Știu că pot filtra autocompletarea utilizând pachete_țintă în #selection_settings

'#selection_handler' => 'implicit',
'#selection_settings' => [
  'target_bundles' => ['my_content_type'],
]

Dar încă nu știu cum să filtrez în continuare după un câmp din acest tip de conținut. Din cate am gasit, pot adauga 'filter' => ['my_field_name' => 'my_field_value'], la #selection_settings. Dar atunci ar trebui să folosesc un obicei #selection_handler.

Am găsit acest exemplu online despre implementarea unui plugin de gestionare a selecției.

<?php

spațiu de nume Drupal\test_module_name\Plugin\EntityReferenceSelection;

utilizați Drupal\node\Plugin\EntityReferenceSelection\NodeSelection;

/**
 * Oferă control de acces specific pentru tipul de entitate nod.
 *
 * @EntityReferenceSelection(
 * id = "default:node_by_field",
 * label = @Translation ("Selectare nod după câmp"),
 * entity_types = {"nod"},
 * grup = „implicit”,
 * greutate = 3
 * )
 */
clasa NodeByFieldSelection extinde NodeSelection {

  /**
   * {@inheritdoc}
   */
  funcția protejată buildEntityQuery($match = NULL, $match_operator = 'CONTAINS') {
    $interogare = parent::buildEntityQuery($match, $match_operator);
    $handler_settings = $this->configuration['handler_settings'];
    dacă (!isset($handler_settings['filtru'])) {
      returnează $interogare;
    }
    $filter_settings = $handler_settings['filtru'];
    foreach ($filter_settings ca $field_name => $valoare) {
      $interogare->condiție($nume_câmp, $valoare, '=');
    }
    returnează $interogare;
  }

}

Cred că în acest exemplu folosesc un handler de selecție numit implicit:nod_după_câmp. Sunt complet nou în pluginuri, dar sunt familiarizat cu modulele. Simt că sunt foarte aproape. Mulțumesc pentru orice îndrumare.

drapel ru
Vreun motiv anume pentru care nu utilizați modulul Views? Puteți crea vizualizări de tipul „Referință la entitate” și apoi selectați această vizualizare (prefiltrată) ca sursă pentru câmpul de referință al entității.
spacecraft96 avatar
drapel ng
Am nevoie ca acest formular să fie generat complet programatic, iar vizualizările nu par să se potrivească nevoilor mele în acest sens. Așa că aș prefera să rezolv acest lucru folosind elemente de redare a formularului

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.