Функция предварительной обработки не работает с Layout Builder (Drupal 8.9.13)
Я использую Layout Builder в проекте Drupal 8. Я создал несколько компонентов, несколько блоков представлений и несколько блоков контента (созданных с использованием пользовательских типов блоков из бэк-офиса). В пользовательском интерфейсе Layout Builder можно добавлять уже созданные блоки или добавлять новый пользовательский блок контента.
У меня нет проблем с повторно используемыми блоками, они выглядят нормально. Когда я создаю новый блок пользовательского контента в модальном окне, могут произойти две вещи:
- Если я не использую функцию предварительной обработки для этого типа блока в .theme, блок будет отображаться без каких-либо проблем.
- Если я использую функцию предварительной обработки для этого типа блока в .theme, блок не будет отображаться, и я получу ошибку Ajax:
" Une erreur HTTP AJAX s'est produite.
Code de statut HTTP : 200
Informations de débogage ci-dessous.
Chemin : [...]/layout_builder/add/block/overrides/node.254/0/content/inline_block%3Abasic?_wrapper_format=drupal_dialog.off_canvas&ajax_form=1
StatusText: OK
ResponseText : AssertionError: Cannot load the "block_content" entity with NULL ID. in assert() (line 249 of [...]\web\core\lib\Drupal\Core\Entity\EntityStorageBase.php)."
Если после ошибки Ajax я сохраню узел и обновлю страницу, блок наконец появится. Если я вызову ошибку Ajax с «предварительно обработанным» блоком контента, а затем попытаюсь добавить блок «непредварительно обработанного» контента, то я получу еще одну ошибку Ajax, и блок также не будет отображаться.
Судя по тому, что я понял из интенсивного поиска в Google, это, похоже, связано с контекстом Drupal, и я не могу притворяться, что полностью понимаю, как он работает. Я определенно не первый, кто столкнулся с этой проблемой, но рабочего решения я так и не нашел.
Мое единственное решение на данный момент — избавиться от этих функций предварительной обработки, но мне почему-то трудно отпустить это. Любая идея или информация будут оценены по достоинству.
Извините за мой несовершенный английский и заранее спасибо.