Tôi có một loại nội dung được hiển thị với Trình tạo bố cục.Khi tôi xem nó ở chế độ mặc định, tùy chọn Chỉnh sửa nhanh không xuất hiện trong menu ngữ cảnh. Điều này là do không có trường nào có dữ liệu-quickit-trường-id
thuộc tính.
Tôi đã dành một vài ngày để theo đuổi điều này xuống. Rõ ràng vấn đề xuất hiện trong chức năng này trong lõi/mô-đun/layout_builder/src/QuickEditIntegration.php
.
hỗ trợ chức năng riêngQuickEditOnComponent(mảng $component, FieldableEntityInterface $entity) {
if (isset($component['content']['#field_name'], $component['#base_plugin_id']) && $component['#base_plugin_id'] === 'field_block' && $entity->hasField($ thành phần['nội dung']['#tên_trường'])) {
return $entity->getFieldDefinition($component['content']['#field_name'])->isDisplayConfigurable('view');
}
trả về SAI;
}
Khi nào thực thểViewAlter
cuộc gọi hỗ trợQuickEditOnComponent
, mảng $component chứa một mảng lồng nhau không mong muốn...
và tất cả những thứ được cho là bên trong Nội dung
thay vào đó được lồng trong một mảng con [0]
. Kết quả là, hàm trả về sai
và không có trường nào được thêm vào $plugin_ids_to_update
và do đó chúng không được phân tích cú pháp bên trong vòng lặp này trong thực thểViewAlter
:
foreach ($plugin_ids_to_update as $delta => $regions) {
foreach ($khu vực dưới dạng $khu vực => $uuids) {
foreach ($uuids là $uuid => $component) {
$build['_layout_builder'][$delta][$region][$uuid]['content']['#view_mode'] = static::getViewModeId($entity, $display, $delta, $uuid, $sections_hash );
}
}
}
... đó là nơi ID chế độ xem được chỉ định cho phép điều đó dữ liệu-quickit-trường-id
thuộc tính sẽ được Quick Edit thêm vào sau.
Tôi đã "sửa lỗi" này bằng cách hack QuickEditIntegration.php
ở hai nơi, thu gọn mảng con [0]
vào chính thành phần $
mảng. Tôi biết đây không phải là cách đúng đắn để làm điều đó. Điều gì có thể khiến các thành phần Trình tạo Bố cục này được điền vào một mảng con thay vì nơi mà QuickEditIntegration mong muốn tìm thấy chúng?