Problem/Motivation
The Support for automatic entity updates has been removed
https://www.drupal.org/node/3034742
Not able to save new Carousel blocks ( A responsive and easy to customize slider block. )
Steps to reproduce
Given that a landing page was created using the layout builder
When a new Carousel inline block added to a section
Then the carousel block will show up in the review while editing the layout for the page
When the page is saved
Then the following error will show upThe website encountered an unexpected error. Please try again later. Drupal\Core\Entity\EntityStorageException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'field_media_carousel_slide_target_id' in 'field list': INSERT INTO "block_content_r__e3b0c44298" ("entity_id", "revision_id", "bundle", "delta", "langcode", "field_media_carousel_slide_target_id") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5), (:db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11), (:db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17), (:db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23), (:db_insert_placeholder_24, :db_insert_placeholder_25, :db_insert_placeholder_26, :db_insert_placeholder_27, :db_insert_placeholder_28, :db_insert_placeholder_29), (:db_insert_placeholder_30, :db_insert_placeholder_31, :db_insert_placeholder_32, :db_insert_placeholder_33, :db_insert_placeholder_34, :db_insert_placeholder_35); Array ( [:db_insert_placeholder_0] => 112 [:db_insert_placeholder_1] => 141 [:db_insert_placeholder_2] => varbase_carousel_block [:db_insert_placeholder_3] => 0 [:db_insert_placeholder_4] => en [:db_insert_placeholder_5] => 43 [:db_insert_placeholder_6] => 112 [:db_insert_placeholder_7] => 141 [:db_insert_placeholder_8] => varbase_carousel_block [:db_insert_placeholder_9] => 1 [:db_insert_placeholder_10] => en [:db_insert_placeholder_11] => 44 [:db_insert_placeholder_12] => 112 [:db_insert_placeholder_13] => 141 [:db_insert_placeholder_14] => varbase_carousel_block [:db_insert_placeholder_15] => 2 [:db_insert_placeholder_16] => en [:db_insert_placeholder_17] => 45 [:db_insert_placeholder_18] => 112 [:db_insert_placeholder_19] => 141 [:db_insert_placeholder_20] => varbase_carousel_block [:db_insert_placeholder_21] => 3 [:db_insert_placeholder_22] => en [:db_insert_placeholder_23] => 46 [:db_insert_placeholder_24] => 112 [:db_insert_placeholder_25] => 141 [:db_insert_placeholder_26] => varbase_carousel_block [:db_insert_placeholder_27] => 4 [:db_insert_placeholder_28] => en [:db_insert_placeholder_29] => 47 [:db_insert_placeholder_30] => 112 [:db_insert_placeholder_31] => 141 [:db_insert_placeholder_32] => varbase_carousel_block [:db_insert_placeholder_33] => 5 [:db_insert_placeholder_34] => en [:db_insert_placeholder_35] => 48 ) in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() (line 810 of core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php). Drupal\Core\Database\StatementWrapper->execute(Array, Array) (Line: 874) Drupal\Core\Database\Connection->query('INSERT INTO {block_content_r__e3b0c44298} ("entity_id", "revision_id", "bundle", "delta", "langcode", "field_media_carousel_slide_target_id") VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5), (:db_insert_placeholder_6, :db_insert_placeholder_7, :db_insert_placeholder_8, :db_insert_placeholder_9, :db_insert_placeholder_10, :db_insert_placeholder_11), (:db_insert_placeholder_12, :db_insert_placeholder_13, :db_insert_placeholder_14, :db_insert_placeholder_15, :db_insert_placeholder_16, :db_insert_placeholder_17), (:db_insert_placeholder_18, :db_insert_placeholder_19, :db_insert_placeholder_20, :db_insert_placeholder_21, :db_insert_placeholder_22, :db_insert_placeholder_23), (:db_insert_placeholder_24, :db_insert_placeholder_25, :db_insert_placeholder_26, :db_insert_placeholder_27, :db_insert_placeholder_28, :db_insert_placeholder_29), (:db_insert_placeholder_30, :db_insert_placeholder_31, :db_insert_placeholder_32, :db_insert_placeholder_33, :db_insert_placeholder_34, :db_insert_placeholder_35)', Array, Array) (Line: 32) Drupal\Core\Database\Driver\mysql\Insert->execute() (Line: 1378) Drupal\Core\Entity\Sql\SqlContentEntityStorage->saveToDedicatedTables(Object, , Array) (Line: 960) Drupal\Core\Entity\Sql\SqlContentEntityStorage->doSaveFieldItems(Object) (Line: 622) Drupal\Core\Entity\ContentEntityStorageBase->doSave(NULL, Object) (Line: 452) Drupal\Core\Entity\EntityStorageBase->save(Object) (Line: 801) Drupal\Core\Entity\Sql\SqlContentEntityStorage->save(Object) (Line: 339) Drupal\Core\Entity\EntityBase->save() (Line: 291) Drupal\layout_builder\Plugin\Block\InlineBlock->saveBlockContent(1, ) (Line: 255) Drupal\layout_builder\InlineBlockEntityOperations->saveInlineBlockComponent(Object, Object, 1, ) (Line: 171) Drupal\layout_builder\InlineBlockEntityOperations->handlePreSave(Object) (Line: 206) layout_builder_entity_presave(Object) call_user_func_array('layout_builder_entity_presave', Array) (Line: 403) Drupal\Core\Extension\ModuleHandler->invokeAll('entity_presave', Array) (Line: 201) Drupal\Core\Entity\EntityStorageBase->invokeHook('presave', Object) (Line: 800) Drupal\Core\Entity\ContentEntityStorageBase->invokeHook('presave', Object) (Line: 495) Drupal\Core\Entity\EntityStorageBase->doPreSave(Object) (Line: 657) Drupal\Core\Entity\ContentEntityStorageBase->doPreSave(Object) (Line: 449) Drupal\Core\Entity\EntityStorageBase->save(Object) (Line: 801) Drupal\Core\Entity\Sql\SqlContentEntityStorage->save(Object) (Line: 339) Drupal\Core\Entity\EntityBase->save() (Line: 285) Drupal\Core\Entity\EntityForm->save(Array, Object) (Line: 177) Drupal\layout_builder\Form\OverridesEntityForm->save(Array, Object) call_user_func_array(Array, Array) (Line: 113) Drupal\Core\Form\FormSubmitter->executeSubmitHandlers(Array, Object) (Line: 51) Drupal\Core\Form\FormSubmitter->doSubmitForm(Array, Object) (Line: 593) Drupal\Core\Form\FormBuilder->processForm('node_landing_page_lb_layout_builder_form', Array, Object) (Line: 321) Drupal\Core\Form\FormBuilder->buildForm(Object, Object) (Line: 73) Drupal\Core\Controller\FormController->getContentResult(Object, Object) (Line: 39) Drupal\layout_builder\Controller\LayoutBuilderHtmlEntityFormController->getContentResult(Object, Object) call_user_func_array(Array, Array) (Line: 123) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 578) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 124) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (Line: 97) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 158) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 67) Drupal\simple_oauth\HttpMiddleware\BasicAuthSwap->handle(Object, 1, 1) (Line: 57) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106) Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 716) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Proposed resolution
#3232568: Switch Varbase Entity Definition Update Manager class to extend the vardot/entity-definition-update-manager class library
#3232617: Switch Varbase Media to use Entity Definition Update Manager class from vardot/entity-definition-update-manager class library
Fix the entity mismatch on install and update
// Entity updates to clear up any mismatched entity and/or field definitions
// And Fix changes were detected in the entity type and field definitions.
\Drupal::classResolver()
->getInstanceFromDefinition(VarbaseEntityDefinitionUpdateManager::class)
->applyUpdates();
Remaining tasks
- ✅ File an issue about this project
- ✅ Fix the entity mismatch on install and update
- ✅ Testing to ensure no regression
- ➖ Automated unit/functional testing coverage
- ➖ Developer Documentation support on feature change/addition
- ➖ User Guide Documentation support on feature change/addition
- ✅ Code review from 1 Varbase core team member
- ✅ Full testing and approval
- ✅ Credit contributors
- ✅ Review with the product owner
- ✅ Release varbase-9.0.2, varbase_carousels-9.0.1
User interface changes
- Be able to save inline Carousel blocks
- Be able to save custom Carousel blocks
API changes
- None
Data model changes
- None
| Comment | File | Size | Author |
|---|---|---|---|
| Edit-layout-for-Carousel-Varbase-9-0-0-Demo-1.png | 633.78 KB | rajab natshah |

Comments
Comment #2
rajab natshahComment #3
rajab natshahComment #4
rajab natshahComment #5
rajab natshahComment #6
rajab natshahComment #7
rajab natshahComment #8
rajab natshah#3232568: Switch Varbase Entity Definition Update Manager class to extend the vardot/entity-definition-update-manager class library
#3232617: Switch Varbase Media to use Entity Definition Update Manager class from vardot/entity-definition-update-manager class library
Comment #9
rajab natshahComment #11
rajab natshahComment #12
rajab natshahComment #13
rajab natshahHave a hook update to fix old installed instance
Comment #15
rajab natshahComment #16
rajab natshahComment #17
rajab natshahComment #18
rajab natshahComment #20
rajab natshahComment #21
rajab natshahComment #22
rajab natshah