Am un tip de conținut care este afișat cu Layout Builder.Când îl văd în modul implicit, opțiunea Editare rapidă nu apare în meniul contextual. Acest lucru se datorează faptului că niciunul dintre câmpuri nu are data-quickedit-field-id
atribut.
Am petrecut câteva zile urmărind asta. Se pare că problema apare în această funcție în core/modules/layout_builder/src/QuickEditIntegration.php
.
suport pentru funcții privateQuickEditOnComponent(array $component, FieldableEntityInterface $entity) {
if (isset($component['conținut']['#field_name'], $component['#base_plugin_id']) && $component['#base_plugin_id'] === 'field_block' && $entity->hasField($ component['conținut']['#field_name'])) {
return $entity->getFieldDefinition($component['content']['#field_name'])->isDisplayConfigurable('view');
}
returnează FALSE;
}
Când entityViewAlter
apeluri suportăQuickEditOnComponent
, matricea $component conține o matrice imbricată neașteptată...
și toate lucrurile care ar trebui să fie înăuntru conţinut
este în schimb imbricat într-un subbary [0]
. Ca rezultat, funcția revine fals
și niciunul dintre câmpuri nu este adăugat $plugin_ids_to_update
și astfel nu sunt analizate în interiorul acestei bucle în entityViewAlter
:
foreach ($plugin_ids_to_update ca $delta => $regiuni) {
foreach ($regiuni ca $regiune => $uuids) {
foreach ($uuids ca $uuid => $component) {
$build['_layout_builder'][$delta][$region][$uuid]['content']['#view_mode'] = static::getViewModeId($entity, $display, $delta, $uuid, $sections_hash );
}
}
}
... care este locul în care este atribuit ID-ul modului de vizualizare care permite acest lucru data-quickedit-field-id
atribut care urmează să fie adăugat de Editare rapidă mai târziu.
Am "reparat" asta prin piratare QuickEditIntegration.php
în două locuri, prăbușind subbarajul [0]
în principal $component
matrice. Știu că acesta nu este modul corect de a face asta. Ce ar putea face ca aceste componente ale Layout Builder să fie populate într-un subbary în loc de locul în care QuickEditIntegration se așteaptă să le găsească?