Error when creating 2nd level menu item

Created on 7 January 2025, 14 days ago

Problem/Motivation

WSOD when adding second level menu item to menu.

Steps to reproduce

Tested on D10.3 and clean D10.4 install, with latest version Radix 6.0.0-rc6. Occurs with main theme or subtheme. No issue with older Subtheme created with generator: 'radix_starterkit:6.0.0-beta9'

Log Message:

Drupal\Core\Render\Component\Exception\InvalidComponentException: [alignment] Does not have a value in the enumeration ["left","right","center","vertical"]/n[style] Does not have a value in the enumeration ["tabs","pills"]/n[fill] Does not have a value in the enumeration ["fill","justify"] in Drupal\Core\Theme\Component\ComponentValidator->validateProps() (line 203 of /app/web/core/lib/Drupal/Core/Theme/Component/ComponentValidator.php).

#0 /app/web/core/lib/Drupal/Core/Template/ComponentsTwigExtension.php(128): Drupal\Core\Theme\Component\ComponentValidator->validateProps(Array, Object(Drupal\Core\Plugin\Component))
#1 /app/web/core/lib/Drupal/Core/Template/ComponentsTwigExtension.php(110): Drupal\Core\Template\ComponentsTwigExtension->doValidateProps(Array, 'radix:dropdown-...')
#2 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:dropdown-menu_g4opZqYvKFD0FtuH1YQku1_xd/splllWIT6pp7iL-5B0EO3x9Z_7Fi0gi_VoDh4XfNDiw.php(46): Drupal\Core\Template\ComponentsTwigExtension->validateProps(Array, 'radix:dropdown-...')
#3 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_0ef53e12f30e23990372602a2b8060d7->doDisplay(Array, Array)
#4 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:nav_-kAZrnGly2PxBpA5h9U4oC0ur/D4TDuve_O7gkD2g9vFjkgLjmWe1OpnNiBVHirgWG2_E.php(167): Twig\Template->yield(Array)
#5 /app/vendor/twig/twig/src/Template.php(431): __TwigTemplate_dbeb25930ec4cd73ad812db2f19a39a1->block_nav_items(Array, Array)
#6 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:nav_-kAZrnGly2PxBpA5h9U4oC0ur/D4TDuve_O7gkD2g9vFjkgLjmWe1OpnNiBVHirgWG2_E.php(83): Twig\Template->yieldBlock('nav_items', Array, Array)
#7 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_dbeb25930ec4cd73ad812db2f19a39a1->doDisplay(Array, Array)
#8 /app/web/sites/default/files/php/twig/677db6555ac7f_menu.html.twig_FFg_eQDfcxwz6jXsZrQyVH8Ub/fAmDzNMO8WqEQ6heuJ-f9QxHyBKfm_3xvgC6SnGGqEk.php(44): Twig\Template->yield(Array)
#9 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_0a4baadb62a63ef1431196f32e498baf->doDisplay(Array, Array)
#10 /app/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#11 /app/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#12 /app/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#13 /app/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#14 /app/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('themes/contrib/...', Array)
#15 /app/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render('menu', Array)
#16 /app/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#17 /app/web/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render(Array)
#18 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:block_hQplF0zSKEyF_OLsISTVF5Out/Pp6npuCn44xrDUyHmx9493XCANe75D_OBrgS9ynIajg.php(157): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#19 /app/vendor/twig/twig/src/Template.php(431): __TwigTemplate_06de804bccf8b5736f05e53e1c9a6bf1->block_block_content(Array, Array)
#20 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:block_hQplF0zSKEyF_OLsISTVF5Out/Pp6npuCn44xrDUyHmx9493XCANe75D_OBrgS9ynIajg.php(99): Twig\Template->yieldBlock('block_content', Array, Array)
#21 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_06de804bccf8b5736f05e53e1c9a6bf1->doDisplay(Array, Array)
#22 /app/web/sites/default/files/php/twig/677db6555ac7f_block--system-menu-block._8LbgyhVbXEuCh6FBwLoGjBmMw/-peyMxYyl5f8106YMrSzQfygHNY4JlNMnM5yWJjPTAI.php(44): Twig\Template->yield(Array)
#23 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_efe054a3e9e3e4180bb85dfe3fd358f5->doDisplay(Array, Array)
#24 /app/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#25 /app/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#26 /app/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#27 /app/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#28 /app/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('themes/contrib/...', Array)
#29 /app/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render('block', Array)
#30 /app/web/core/lib/Drupal/Core/Render/Renderer.php(504): Drupal\Core\Render\Renderer->doRender(Array)
#31 /app/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#32 /app/web/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render(Array)
#33 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:page-navigation_3BrB-qpNsOdrOWK3z5bSB6shT/o2kvUr1tz31NqaAz8bW2IUdbb2IBRU0b6UPg_agx70c.php(166): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#34 /app/vendor/twig/twig/src/Template.php(431): __TwigTemplate_137a8323239de63f3b045b6fe711abac___1114748936->block_branding(Array, Array)
#35 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:navbar_BT9uG8yLPYzabT-4JF9VrfgJZ/i1yKJeLQZVp5yvto83WFSYbZKiCAtxzdD9-jYCkVcOs.php(101): Twig\Template->yieldBlock('branding', Array, Array)
#36 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_b06107c28a28697a0963c7331d3a977a->doDisplay(Array, Array)
#37 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:page-navigation_3BrB-qpNsOdrOWK3z5bSB6shT/o2kvUr1tz31NqaAz8bW2IUdbb2IBRU0b6UPg_agx70c.php(150): Twig\Template->yield(Array, Array)
#38 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_137a8323239de63f3b045b6fe711abac___1114748936->doDisplay(Array, Array)
#39 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:page-navigation_3BrB-qpNsOdrOWK3z5bSB6shT/o2kvUr1tz31NqaAz8bW2IUdbb2IBRU0b6UPg_agx70c.php(48): Twig\Template->yield(Array)
#40 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_137a8323239de63f3b045b6fe711abac->doDisplay(Array, Array)
#41 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:page_om_4ecvEEGk-5yBOfnLYVgoYB/XG4u8nI2_ThTKwEGRO0owOFf_GH-RwPH7lAp1kz6GJw.php(90): Twig\Template->yield(Array)
#42 /app/vendor/twig/twig/src/Template.php(431): __TwigTemplate_43c432e4c72a7b757ed4e444baff622a->block_page_navigation(Array, Array)
#43 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:page_om_4ecvEEGk-5yBOfnLYVgoYB/XG4u8nI2_ThTKwEGRO0owOFf_GH-RwPH7lAp1kz6GJw.php(63): Twig\Template->yieldBlock('page_navigation', Array, Array)
#44 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_43c432e4c72a7b757ed4e444baff622a->doDisplay(Array, Array)
#45 /app/web/sites/default/files/php/twig/677db6555ac7f_page.html.twig_A31y6J7ajjytvl0rQXkvwzcbp/k09c3iNlHVQxh0_zUj3CeMNYZuoO5oVCx6rtbnSkQiA.php(44): Twig\Template->yield(Array)
#46 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_a94d7d155f405d5f353d279994d86080->doDisplay(Array, Array)
#47 /app/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#48 /app/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#49 /app/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#50 /app/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#51 /app/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('themes/contrib/...', Array)
#52 /app/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render('page', Array)
#53 /app/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#54 /app/web/core/lib/Drupal/Core/Template/TwigExtension.php(484): Drupal\Core\Render\Renderer->render(Array)
#55 /app/web/sites/default/files/php/twig/677db6555ac7f_radix:html_7H_cjLoDPk7BLqd22ePBPhhUh/UeXmW93oZrQXOelIJKClPzbNC60OJ5Q7Rx67EKoVd3s.php(111): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#56 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_472e411c8929f70ec4c2ae818a9df618->doDisplay(Array, Array)
#57 /app/web/sites/default/files/php/twig/677db6555ac7f_html.html.twig_lhsl2BUkQ1HDdLlpPTEqfCMbY/o_54oxd3baEIQHTZxV9NTWuQERd9F588mJd9zm39xao.php(44): Twig\Template->yield(Array)
#58 /app/vendor/twig/twig/src/Template.php(387): __TwigTemplate_60a4c4d3fb94290a8aaea20f99995743->doDisplay(Array, Array)
#59 /app/vendor/twig/twig/src/Template.php(343): Twig\Template->yield(Array, Array)
#60 /app/vendor/twig/twig/src/Template.php(358): Twig\Template->display(Array)
#61 /app/vendor/twig/twig/src/TemplateWrapper.php(35): Twig\Template->render(Array)
#62 /app/web/core/themes/engines/twig/twig.engine(33): Twig\TemplateWrapper->render(Array)
#63 /app/web/core/lib/Drupal/Core/Theme/ThemeManager.php(348): twig_render_template('themes/contrib/...', Array)
#64 /app/web/core/lib/Drupal/Core/Render/Renderer.php(491): Drupal\Core\Theme\ThemeManager->render('html', Array)
#65 /app/web/core/lib/Drupal/Core/Render/Renderer.php(248): Drupal\Core\Render\Renderer->doRender(Array, false)
#66 /app/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(158): Drupal\Core\Render\Renderer->render(Array)
#67 /app/web/core/lib/Drupal/Core/Render/Renderer.php(638): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
#68 /app/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(153): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#69 /app/web/core/lib/Drupal/Core/EventSubscriber/MainContentViewSubscriber.php(90): Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch))
#70 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
#71 /app/web/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
#72 /app/vendor/symfony/http-kernel/HttpKernel.php(186): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view')
#73 /app/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#74 /app/web/core/lib/Drupal/Core/StackMiddleware/Session.php(53): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#75 /app/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#76 /app/web/core/lib/Drupal/Core/StackMiddleware/ContentLength.php(28): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#77 /app/web/core/modules/big_pipe/src/StackMiddleware/ContentLength.php(32): Drupal\Core\StackMiddleware\ContentLength->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#78 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(116): Drupal\big_pipe\StackMiddleware\ContentLength->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#79 /app/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(90): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#80 /app/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#81 /app/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#82 /app/web/core/lib/Drupal/Core/StackMiddleware/AjaxPageState.php(36): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#83 /app/web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\AjaxPageState->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#84 /app/web/core/lib/Drupal/Core/DrupalKernel.php(741): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#85 /app/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#86 {main}

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

πŸ› Bug report
Status

Active

Version

6.0

Component

Code

Created by

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @4x3
  • πŸ‡ΊπŸ‡ΈUnited States danchadwick Boston

    This is a Single Directory Component (SDC) validation error. This validation only happens for core developers with assertions on. @see "Component Data Validation" here: https://www.drupal.org/docs/develop/theming-drupal/using-single-director... β†’

    So if you're trying to make progress, either disable assertions or remove the drupal/core-dev package from your project's composer.json.

    I suspect there are a lot of schema validation errors in Radix. I'd welcome patches or MR to improve them.

    For this particular one, it looks like:
    - alignment is '' for left. This string value needs to be added to the schema. Might be wise to allow null too.
    - style is set as a class on the nav ul item and should not be passed to the dropdowm-menu component at all. It isn't used there. So style should be removed from the schema.
    - fill is the same as style. Should be removed from the schema.

    If you're game, update to the latest radix dev (as there have been a number of changes since rc6), make the above schema changes in components/dropdown-menu/dropdown-menu.component.yml, and post a MR or patch. I'd be happy to commit it.

  • Thank you. Confirming that I was originally testing with latest radix dev - 6.0.0-rc6+15-dev (2025-Jan-07).

    Also confirming that removing drupal/core-dev package has resolved the error. Will take a look at the schema changes again as that was where I was headed.

  • πŸ‡ΊπŸ‡ΈUnited States danchadwick Boston

    Super. I could sure use the help. There's no way that I can go through all the components and make sure that the variables and slots actually used correspond to the schema and the block comments in both the component twig and calling template twig files.

    Here's some sample schema. I haven't found a good definitive guide other than this though:
    https://www.drupal.org/docs/develop/theming-drupal/using-single-director... β†’

  • Updated Added MR - not sure I did that correctly as it was my first time using this process.

  • πŸ‡ΊπŸ‡ΈUnited States danchadwick Boston

    @amysiano4x3 - Close, but not quite. The MR was opened on the issue for the table schema, not this one.

  • Sorry - not sure how I did that - started over. Let me know if that worked.

  • πŸ‡ΊπŸ‡ΈUnited States danchadwick Boston

    I too am new to the drupalcode merge request workflow. First, I had to get the pipeline to build (which I did in another issue). This I found your change and merged it, but it wasn't linked to this issue. So your changes have been committed and merged in 6.0.x. Thanks for your help.

Production build 0.71.5 2024