Puncte:1

Cum setez valoarea implicită pentru un câmp de referință pentru entitate utilizator în hook_form_alter()?

drapel us
CKL

Am încercat următorul cod, dar nu merge.

$form['field_name']['widget'][0]['target_id']['#default_value'] = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id( ));
Puncte:1
drapel us

Widgetul implicit utilizat pentru câmpurile de referință pentru entități (cu excepția câmpurilor de referință pentru entități pentru etichetele de taxonomie) este implementat de către EntityReferenceAutocompleteWidget clasa care, în ea formElement() implementare, returnează următorul element de formular.

$element += [
  '#type' => 'entity_autocomplete',
  '#target_type' => $this->getFieldSetting('target_type'),
  '#selection_handler' => $this->getFieldSetting('handler'),
  '#selection_settings' => $selection_settings,
  // Articolele câmpului de referință al entității gestionează singure validarea prin
  // constrângerea „ValidReference”.
  '#validate_reference' => FALSE,
  '#maxlength' => 1024,
  '#default_value' => isset($referenced_entities[$delta]) ? $referenced_entities[$delta]: NULL,
  '#size' => $this->getSetting('size'),
  '#placeholder' => $this->getSetting('placeholder'),
];

În loc de form['field_name']['widget'][0]['target_id']['#default_value'], codul ar trebui setat form['field_name']['widget'][0]['#default_value'].

form['field_name']['widget'][0]['#default_value'] = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());

Ca o notă secundară, pentru a modifica elementul(ele) formularului returnat(e) dintr-un widget de câmp, Drupal make hook_field_widget_complete_form_alter() (și hook_field_widget_complete_WIDGET_TYPE_form_alter()) disponibile în acest scop. Are acces la următoarele informații.

  • Instanța pluginului widget ($context['widget']), care permite accesarea ID-ului widgetului (de exemplu, entity_reference_autocomplete, entity_reference_autocomplete_tags) cu $context['widget']->getPluginId()
  • Valorile câmpului ($context['articole']), care permite obținerea tipului țintă al câmpului de referință ($context['items']->getFieldDefinition()->getFieldStorageDefinition()->getSetting('target_type'))sau tipul câmpului ($context['items']->getFieldDefinition()->getType()), de exemplu

Când este posibil, ar trebui de preferat să utilizați acest cârlig pentru widget-uri de câmp, în loc de hook_form_alter().

media_field_widget_complete_form_alter() este implementarea acelui cârlig realizată de modulul Media.

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.