Puncte:0

Creați formular personalizat cu câmpul de formular de entitate

drapel de

Am o caracteristică pentru a migra de la Drupal 7 la Drupal 9. Acest lucru îmi permite să construiesc un formular personalizat alcătuit din câmpuri statice, pe care le definesc în codul modulului meu și câmpuri recuperate dinamic de la o entitate.

A funcționat cu „funcția ctools_field_invoke_field”, care se bazează pe modulul Chaos Tools. Această funcție se bazează pe o funcție nativă Drupal „field_default_form”.

Această funcție nu a fost migrată la Drupal 9 conform cercetărilor mele. Pot găsi un echivalent? Ar trebui să dezvolt această funcție de la zero?

Codul meu anterior:

// Dacă nu este furnizată nicio limbă, utilizați limba implicită a site-ului.
$options = array(
  'limba' => field_valid_language($langcode),
  'default' => TRUE,
);

// Adăugați la formular
ctools_include('câmpuri');
$field_instance = field_info_instance($entity_type, $field_name, $bundle);
return (matrice) ctools_field_invoke_field($field_instance, 'form', $entity_type, $entity, $form, $form_state, $options);
Puncte:0
drapel ss

Nici eu nu am gasit o functie similara. Se pare că nu există. Cu toate acestea, iată cum se poate realiza în formele Drupal 8/9:

$entity = $this->entityTypeManager->getStorage('nod')->create([
  'type' => 'articol'
]);
$form_state->set('entity', $entity);


/** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */
$form_display = $this->entityTypeManager->getStorage('entity_form_display')->load('node.article.custom_form_display');
$form_state->set('form_display', $form_display);

foreach ($form_display->getComponents() as $name => $component) {
  $widget = $form_display->getRenderer($nume);
  dacă (!$widget) {
    continua;
  }

  $items = $entitate->get($nume);
  $items->filterEmptyItems();
  $form[$nume] = $widget->form($articole, $form, $form_state);
  $form[$name]['#access'] = $items->access('editare');
}

Acest cod a fost preluat din următorul articol: https://www.webomelette.com/how-render-entity-field-widgets-inside-custom-form-drupal-8

Nu sunt afiliat cu el, dar personal recomand să citesc.

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.