- Issue created by @Kristen Pol
- 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
Note there are a number of errors in the logs like:
Warning: Trying to access array offset on null in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
Warning: Undefined array key "icon_position" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
Warning: Undefined array key "download" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php)
- 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
Tested the other components and many have the same problem (all the "shoe" ones). The heading and and hero components let me change their title text. When I upload an image for the image component, I'm redirected which is a different bug obviously but won't add another issue for that for now.
- Assigned to Kristen Pol
- Status changed to Closed: duplicate
4 months ago 9:42am 28 August 2024 - 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
I predicted this problem, which is why I opened 📌 New component requirement: each SDC prop must have StorablePropShape Active , which is almost done and will fix this. Crediting you on that issue for reporting this 👍
- Issue was unassigned.
- Status changed to Active
4 months ago 7:49am 29 August 2024 - 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
Reopening this one.
📌 New component requirement: each SDC prop must have StorablePropShape Active
is marked fixed but I just tried the latest code with a fresh install using these instructions → and am getting the same behavior again.
I don't see "Shoe Button" listed anymore, but I tried "Shoe Badge" with similar behavior.
Logs:
Warning: Undefined array key "pill" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php) #0 /var/www/html/web/core/includes/bootstrap.inc(166): _drupal_error_handler_real() #1 /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php(73): _drupal_error_handler() #2 [internal function]: Drupal\experience_builder\Form\ComponentPropsForm->buildForm() #3 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(536): call_user_func_array() #4 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(284): Drupal\Core\Form\FormBuilder->retrieveForm() #5 /var/www/html/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm() #6 [internal function]: Drupal\Core\Controller\FormController->getContentResult() #7 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array() #8 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #9 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext() #10 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext() #11 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #12 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw() #13 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle() #14 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle() #15 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle() #16 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle() #17 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle() #18 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass() #19 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle() #20 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() #21 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() #22 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle() #23 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle() #24 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle() #25 {main}
Warning: Undefined array key "pulse" in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php) #0 /var/www/html/web/core/includes/bootstrap.inc(166): _drupal_error_handler_real() #1 /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php(73): _drupal_error_handler() #2 [internal function]: Drupal\experience_builder\Form\ComponentPropsForm->buildForm() #3 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(536): call_user_func_array() #4 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(284): Drupal\Core\Form\FormBuilder->retrieveForm() #5 /var/www/html/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm() #6 [internal function]: Drupal\Core\Controller\FormController->getContentResult() #7 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array() #8 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #9 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext() #10 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext() #11 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #12 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw() #13 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle() #14 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle() #15 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle() #16 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle() #17 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle() #18 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass() #19 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle() #20 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() #21 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() #22 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle() #23 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle() #24 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle() #25 {main}
Message Warning: Trying to access array offset on null in Drupal\experience_builder\Form\ComponentPropsForm->buildForm() (line 73 of /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php) #0 /var/www/html/web/core/includes/bootstrap.inc(166): _drupal_error_handler_real() #1 /var/www/html/web/modules/contrib/experience_builder/src/Form/ComponentPropsForm.php(73): _drupal_error_handler() #2 [internal function]: Drupal\experience_builder\Form\ComponentPropsForm->buildForm() #3 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(536): call_user_func_array() #4 /var/www/html/web/core/lib/Drupal/Core/Form/FormBuilder.php(284): Drupal\Core\Form\FormBuilder->retrieveForm() #5 /var/www/html/web/core/lib/Drupal/Core/Controller/FormController.php(73): Drupal\Core\Form\FormBuilder->buildForm() #6 [internal function]: Drupal\Core\Controller\FormController->getContentResult() #7 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array() #8 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #9 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext() #10 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext() #11 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #12 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw() #13 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle() #14 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle() #15 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle() #16 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle() #17 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle() #18 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass() #19 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle() #20 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() #21 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() #22 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle() #23 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle() #24 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle() #25 {main}
Drupal\Core\Render\Component\Exception\InvalidComponentException: [pill] Integer value found, but a boolean or an object is required/n[pulse] String value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/web/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php). #0 /var/www/html/web/core/lib/Drupal/Core/Template/ComponentsTwigExtension.php(127): Drupal\Core\Theme\Component\ComponentValidator->validateProps() #1 /var/www/html/web/core/lib/Drupal/Core/Template/ComponentsTwigExtension.php(109): Drupal\Core\Template\ComponentsTwigExtension->doValidateProps() #2 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_experience_builder:shoe_b_1MG5agHVvcJo_Pcqlpl97KFIk/uhIQQ8-FwrK24uki6fzvdY6lQCxoKjx76OBLorAG2fE.php(43): Drupal\Core\Template\ComponentsTwigExtension->validateProps() #3 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_a065b8b7ca093140df6d582ecb978039->doDisplay() #4 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__6d15ed_pztJZ_2hkq2PSuj-eaXUPfFP6/fUxgD60nVLiTWXEJ4IvMJa47jIg1ffTz_eb41AHv-6U.php(123): Twig\Template->yield() #5 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_6f2f2892690a25b32886131362215d79___1273635156->doDisplay() #6 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__6d15ed_pztJZ_2hkq2PSuj-eaXUPfFP6/fUxgD60nVLiTWXEJ4IvMJa47jIg1ffTz_eb41AHv-6U.php(40): Twig\Template->yield() #7 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_6f2f2892690a25b32886131362215d79->doDisplay() #8 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield() #9 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render() #10 /var/www/html/web/core/lib/Drupal/Core/Template/TwigEnvironment.php(234): Twig\TemplateWrapper->render() #11 /var/www/html/web/core/lib/Drupal/Core/Render/Element/InlineTemplate.php(54): Drupal\Core\Template\TwigEnvironment->renderInline() #12 [internal function]: Drupal\Core\Render\Element\InlineTemplate::preRenderInlineTemplate() #13 /var/www/html/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(113): call_user_func_array() #14 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(870): Drupal\Core\Render\Renderer->doTrustedCallback() #15 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(432): Drupal\Core\Render\Renderer->doCallback() #16 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender() #17 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender() #18 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender() #19 /var/www/html/web/core/lib/Drupal/Core/Template/TwigExtension.php(475): Drupal\Core\Render\Renderer->render() #20 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__61f286_cr4z0MdOC8FLvYnVGaIZR7XtO/1MaloL-Nmefv-9wEP3jVaQeEZT2chmmgprtUoAfY7MY.php(147): Drupal\Core\Template\TwigExtension->escapeFilter() #21 /var/www/html/vendor/twig/twig/src/Template.php(430): __TwigTemplate_7ea36e8c2fe70c246011f10332ef82f2___1709422647->block_column_two() #22 /var/www/html/vendor/twig/twig/src/Template.php(193): Twig\Template->yieldBlock() #23 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_experience_builder:two_co_z7IWqBG4CjqhiCCoQroz8Vq0z/aTzvWJEkqXRw3egXCGkXYKlFp_TZwCq3pHjY4-BJ5T0.php(66): Twig\Template->renderBlock() #24 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_d232d4b58ef9ebdaa18420c2676ce452->doDisplay() #25 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__61f286_cr4z0MdOC8FLvYnVGaIZR7XtO/1MaloL-Nmefv-9wEP3jVaQeEZT2chmmgprtUoAfY7MY.php(125): Twig\Template->yield() #26 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_7ea36e8c2fe70c246011f10332ef82f2___1709422647->doDisplay() #27 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff___string_template__61f286_cr4z0MdOC8FLvYnVGaIZR7XtO/1MaloL-Nmefv-9wEP3jVaQeEZT2chmmgprtUoAfY7MY.php(40): Twig\Template->yield() #28 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_7ea36e8c2fe70c246011f10332ef82f2->doDisplay() #29 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield() #30 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render() #31 /var/www/html/web/core/lib/Drupal/Core/Template/TwigEnvironment.php(234): Twig\TemplateWrapper->render() #32 /var/www/html/web/core/lib/Drupal/Core/Render/Element/InlineTemplate.php(54): Drupal\Core\Template\TwigEnvironment->renderInline() #33 [internal function]: Drupal\Core\Render\Element\InlineTemplate::preRenderInlineTemplate() #34 /var/www/html/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(113): call_user_func_array() #35 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(870): Drupal\Core\Render\Renderer->doTrustedCallback() #36 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(432): Drupal\Core\Render\Renderer->doCallback() #37 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender() #38 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender() #39 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender() #40 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender() #41 /var/www/html/web/core/lib/Drupal/Core/Template/TwigExtension.php(475): Drupal\Core\Render\Renderer->render() #42 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_page.html.twig_YUdYz6x-iJcRjvTYNH_DVwpw6/cxvdO_x3zsLgBV8yAEIPUvwsKoRTq1Q3fTmRdPVnWng.php(163): Drupal\Core\Template\TwigExtension->escapeFilter() #43 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_202aa75686e2177fb449be965643e91a->doDisplay() #44 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield() #45 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render() #46 /var/www/html/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render() #47 /var/www/html/web/modules/contrib/experience_builder/themes/engines/semi_coupled/semi_coupled.engine(39): twig_render_template() #48 /var/www/html/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): semi_coupled_render_template() #49 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render() #50 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender() #51 /var/www/html/web/core/lib/Drupal/Core/Template/TwigExtension.php(475): Drupal\Core\Render\Renderer->render() #52 /var/www/html/web/sites/default/files/php/twig/66d025ca492ff_html.html.twig_52Qf1eg-AtuaMf7xGvt3ekB9z/NNbpV-dWovNIAeLxnsgKAszjO5GneNO3M6ywn4t8xgw.php(94): Drupal\Core\Template\TwigExtension->escapeFilter() #53 /var/www/html/vendor/twig/twig/src/Template.php(360): __TwigTemplate_2be45878b8e9ee78d9e324a1567b13d1->doDisplay() #54 /var/www/html/vendor/twig/twig/src/Template.php(335): Twig\Template->yield() #55 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render() #56 /var/www/html/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render() #57 /var/www/html/web/modules/contrib/experience_builder/themes/engines/semi_coupled/semi_coupled.engine(39): twig_render_template() #58 /var/www/html/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): semi_coupled_render_template() #59 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render() #60 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender() #61 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(153): Drupal\Core\Render\Renderer->render() #62 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\Render\Renderer->Drupal\Core\Render\{closure}() #63 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(152): Drupal\Core\Render\Renderer->executeInRenderContext() #64 /var/www/html/web/core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php(66): Drupal\Core\Render\Renderer->renderRoot() #65 /var/www/html/web/core/lib/Drupal/Core/ProxyClass/Render/BareHtmlPageRenderer.php(76): Drupal\Core\Render\BareHtmlPageRenderer->renderBarePage() #66 /var/www/html/web/modules/contrib/experience_builder/src/Controller/SdcController.php(354): Drupal\Core\ProxyClass\Render\BareHtmlPageRenderer->renderBarePage() #67 [internal function]: Drupal\experience_builder\Controller\SdcController->preview() #68 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array() #69 /var/www/html/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #70 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(121): Drupal\Core\Render\Renderer->executeInRenderContext() #71 /var/www/html/web/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext() #72 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(181): Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() #73 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw() #74 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle() #75 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle() #76 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle() #77 /var/www/html/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle() #78 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\big_pipe\StackMiddleware\ContentLength->handle() #79 /var/www/html/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass() #80 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle() #81 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() #82 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() #83 /var/www/html/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle() #84 /var/www/html/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle() #85 /var/www/html/web/index.php(19): Drupal\Core\DrupalKernel->handle() #86 {main}
- Status changed to Needs work
4 months ago 8:20am 29 August 2024 - 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
This isn't just "shoe badge"... also happens with:
- Shoe Icon
- Shoe Tab
- Shoe Tab Group
- Shoe Tab Panel
- Assigned to wim leers
- 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
This is happening even for the
experience_builder:my-hero
SDC.The root cause for the symptom took me 10 seconds to find.
</code> calls <code>$component->get('defaults')['props'][$sdc_prop_name]['field_type']
, but not all prop names have an entry in theComponent
config entity:uuid: 122bc978-25ca-45d0-b4df-71f9acd9827b langcode: en status: true dependencies: { } label: Hero component: experience_builder+my-hero defaults: props: cta1href: field_type: uri field_storage_settings: { } field_instance_settings: { } field_widget: uri default_value: value: 'https://example.com' expression: ℹ︎uri␟value heading: field_type: string field_storage_settings: { } field_instance_settings: { } field_widget: string_textfield default_value: value: 'There goes my hero' expression: ℹ︎string␟value
Full list of props:
heading
subheading
cta1
cta1href
cta2
attributes
Investigating why this is happening.
- 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
Another 10 seconds later, and it's clear
\Drupal\experience_builder\Entity\Component::getDefaultsForComponentPlugin()
is the culprit: it's only generating defaults forrequired
props, instead of all props.So we caused this regression in 📌 Auto-create/update Component config entities for all discovered SDCs that meet XB's minimum criteria Fixed without noticing. How is that possible?
It's possible because the validation of
Component
config entities is incomplete, and we know it:experience_builder.schema.yml
contains this since ✨ Allow specifying default props values when opting an SDC in for XB Fixed :# Ensure a default is specified for EVERY prop of this component. # @todo Follow-up issue: implement this constraint, similar to the `CKEditor5EnabledConfigurablePlugins` constraint, with test coverage that causes existing config entities to fail if the props of an SDC change (because that is a BC break in the SDC). # KeyForEveryComponentProp: [%parent.component]
👆 Implementing that will cause
\Drupal\Tests\experience_builder\Kernel\ComponentTest::testComponentAutoCreate()
to fail. No need for additional test coverage beyond that. - Merge request !230#3470550: Component config entities are incomplete: missing entries for optional props, causing errors in ComponentPropsForm → (Merged) created by wim leers
- 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
Yay,
There were 57 errors:
in https://git.drupalcode.org/project/experience_builder/-/jobs/2602729 🥳 - 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
First pass at fixing the bug brought the failures down to 40: https://git.drupalcode.org/project/experience_builder/-/jobs/2602877.
But many tests are now failing because some plugins cannot be found: in kernel tests, all module dependencies must be explicitly installed. This is now necessary because the validator is verifying the config entity is consistent with the SDC plugin.
So: installing missing modules next.
- 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
Down to 24 test failures.
Most test failures are now like this:
'component' entity with ID 'experience_builder+experimental' already exists.
— https://git.drupalcode.org/project/experience_builder/-/jobs/2603045
Root cause:
\Drupal\experience_builder\Plugin\ComponentPluginManager
createsComponent
config entities in\Drupal\experience_builder\Plugin\ComponentPluginManager::setCachedDefinitions()
.But in this MR, the
Component::save()
call happens inside that method, which will trigger validation, which in turn also callsComponentPluginManager
. Which then causes these config entities to be created too! - Issue was unassigned.
- 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
Down to 22 test failures.
The remaining violations look like this:
1) DefaultConfigTest::testConfig Drupal\Core\Config\Schema\SchemaIncompleteException: Schema errors for experience_builder.component.sdc_test_all_props+all-props with the following errors: experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum.field_storage_settings.min missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum.field_storage_settings.max missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum_maximum_timestamps.field_storage_settings.min missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_integer_range_minimum_maximum_timestamps.field_storage_settings.max missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_string_format_date.default_value.value missing schema, experience_builder.component.sdc_test_all_props+all-props:defaults.props.test_string_format_date_time.default_value.value missing schema
and
Drupal\Component\Plugin\Exception\PluginNotFoundException: The "space separated:space separated" plugin does not exist. Valid plugin IDs for Drupal\experience_builder\Plugin\ComponentPluginManager are: experience_builder:video, experience_builder:shoe_tab_panel, experience_builder:shoe_tab, experience_builder:shoe_icon, experience_builder:shoe_details, experience_builder:shoe_button, experience_builder:shoe_badge, experience_builder:heading, experience_builder:obsolete, experience_builder:experimental, experience_builder:deprecated, experience_builder:my-section, experience_builder:my-hero, experience_builder:image, experience_builder:two_column, experience_builder:shoe_tab_group, experience_builder:one_column, sdc_test:no-props, sdc_test:my-cta, sdc_test:my-button, sdc_test:my-banner, sdc_test:array-to-object
That second one is caused by 📌 Component config entity should validate that the SDC actually (still) exists Active not yet being fixed. Let's fix that first. Or fix it here. Whichever is handier.
I think @f.mazeikis and @tedbow can carry this over the finish line!
- 🇬🇧United Kingdom f.mazeikis Brighton
f.mazeikis → made their first commit to this issue’s fork.
- Assigned to wim leers
- Status changed to Needs review
4 months ago 4:16pm 3 September 2024 - Issue was unassigned.
- Status changed to RTBC
4 months ago 5:09pm 3 September 2024 - 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
Closed 📌 Component config entity should validate that the SDC actually (still) exists Active as outdated — @f.mazeikis implemented that as part of this issue.
This is ready for final sign-off by @f.mazeikis. We both worked on this, but he's the owner of 👍😊
- Assigned to f.mazeikis
- 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
For testing, I needed to get the fix from this issue in there:
- Status changed to Needs work
4 months ago 6:47pm 3 September 2024 - 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
The shoe components are still causing errors.
Try dragging shoe icon or shoe tab panel and you'll see the error popup.
Or drag shoe badge, shoe tab, or shoe tab group and try changing something.
- 🇫🇮Finland lauriii Finland
I added the shoe icon component and got the following error:
Drupal\Core\Render\Component\Exception\InvalidComponentException: [name] The property name is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
I changed a value for the shoe tab component using the right sidebar and got the following error:
Drupal\Core\Render\Component\Exception\InvalidComponentException: [active] Integer value found, but a boolean or an object is required/n[closable] Integer value found, but a boolean or an object is required/n[disabled] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
I changed a value for the shoe badge using the right sidebar and got the following error:
Drupal\Core\Render\Component\Exception\InvalidComponentException: [pill] Integer value found, but a boolean or an object is required/n[pulse] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
I changed a value for the shoe tab group using the right sidebar and got the following error:
Drupal\Core\Render\Component\Exception\InvalidComponentException: [no_scroll] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /var/www/html/drupal/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
I'll let @wim leers and/or @f.mazeikis to decide if this is something that should be fixed here or in a follow-up issue.
- 🇫🇮Finland lauriii Finland
It seems that #23 might be related to 🐛 `enum` data shapes: error when choosing "- None -" in `` Needs work but maybe there's an aspect related to booleans that isn't being tracked there currently?
- Status changed to RTBC
4 months ago 6:55am 4 September 2024 - 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
The boolean shenanigans reported in #23 are indeed unrelated.
The goal of this issue is to be able to render the
ComponentPropsForm
without triggering the PHP warnings reported in #3. That it does 👍If I interact with the boolean field widget, I can also reproduce
Drupal\Core\Render\Component\Exception\InvalidComponentException: [pill] String value found, but a boolean or an object is required/n[pulse] Integer value found, but a boolean or an object is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
This is being worked on in 📌 Component props form: map textarea, bool, and select elements to React components Fixed . The root cause is the request to update the preview after interacting with the boolean field widget, which sends this data from the client to the server that indeed violates the JSON schema, because both
pill
andpulse
must be booleans, not strings nor integers: - 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
So if both this and that issue are fixed then there will no more fatal errors when using the prop forms for ALL XB example components? If so, ETA on both?
- 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
Yes, for all XB components. With the exception of the special
all-props
SDC, which we're using to be able to test/develop missing pieces. But that's not an SDC that is installed by default. -
wim leers →
committed 25d5779c on 0.x
Issue #3470550 by wim leers, f.mazeikis, kristen pol: Component config...
-
wim leers →
committed 25d5779c on 0.x
- Issue was unassigned.
- Status changed to Fixed
4 months ago 9:27am 4 September 2024 - 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
- 🇺🇸United States Kristen Pol Santa Cruz, CA, USA
Thanks. I tested and found the following:
1. Shoe button is missing... not sure why and didn't debug but maybe due to the variant info?
2. Shoe badge and shoe tab are "working" (other than the boolean true/false issue that I reported).
🐛 [PP-1] Can't toggle boolean prop back to true after changing to false Postponed
3. Some others cause fatal errors...
shoe icon and shoe tab panel have known issue:
Drupal\Core\Render\Component\Exception\InvalidComponentException: [name] The property name is required in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 206 of /var/www/html/web/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).
🐛 Some components cannot be used in XB because UI prevents SDC props being named `name` Active
4. Sidenote that there are a lot of these:
Attempting to re-run cron while it is already running.
as well for some reason.
- 🇧🇪Belgium wim leers Ghent 🇧🇪🇪🇺
- See 📌 Surface the REASON for an SDC not being made available in XB (i.e. not meeting criteria) Fixed .
- Yep, we're well aware.
- The more pressing blocker to that is
🐛
Emptying a required value through the UI crashes the app
Active
, although indeed
name
is de facto an unsupported prop name right now, and that must be fixed, too - That's unrelated to XB for sure.
Automatically closed - issue fixed for 2 weeks with no activity.