Problem/Motivation
I keep getting the following error on webforms that do not use the webformnavigation module to add forward navigation:
PHP errors logged to watchdog in scenario Owner can fill out the Itchy Dog Questionnaire.stdClass Object
(
[wid] => 140
[uid] => 96
[type] => php
[message] => %type: @message in %function (line %line of %file) @backtrace_string.
[variables] => Array
(
[%type] => TypeError
[@message] => Argument 1 passed to Drupal\webformnavigation\WebformNavigationHelper::getErrors() must implement interface Drupal\webform\WebformSubmissionInterface, null given, called in /var/www/html/docroot/modules/contrib/webformnavigation/webformnavigation.module on line 68
[%function] => Drupal\webformnavigation\WebformNavigationHelper->getErrors()
[%file] => /var/www/html/docroot/modules/contrib/webformnavigation/src/WebformNavigationHelper.php
[%line] => 152
[@backtrace_string] => #0 /var/www/html/docroot/modules/contrib/webformnavigation/webformnavigation.module(68): Drupal\webformnavigation\WebformNavigationHelper->getErrors(NULL)
#1 /var/www/html/docroot/core/lib/Drupal/Core/Theme/ThemeManager.php(287): webformnavigation_preprocess_webform_progress_tracker(Array, 'webform_progres...', Array)
#2 /var/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php(422): Drupal\Core\Theme\ThemeManager->render('webform_progres...', Array)
#3 /var/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php(201): Drupal\Core\Render\Renderer->doRender(Array, false)
#4 /var/www/html/docroot/core/lib/Drupal/Core/Template/TwigExtension.php(479): Drupal\Core\Render\Renderer->render(Array)
#5 /var/www/html/docroot/sites/default/files/php/twig/6241e4ae3fac4_webform-progress.html.twi_3kfxcORrP7BUSY1-aNsFOIEBH/NVwINoHitxHOXM70fVq56VrXYLf5UxT1bvvHYQptU6A.php(46): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#6 /var/www/html/vendor/twig/twig/src/Template.php(405): __TwigTemplate_56e73ff5e79b6cadef1395e7bdb4600d9eb456ebc74d531be186da1ffbac3d14->doDisplay(Array, Array)
#7 /var/www/html/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling(Array, Array)
#8 /var/www/html/vendor/twig/twig/src/Template.php(390): Twig\Template->display(Array)
#9 /var/www/html/docroot/core/themes/engines/twig/twig.engine(55): Twig\Template->render(Array)
#10 /var/www/html/docroot/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('modules/contrib...', Array)
#11 /var/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php(422): Drupal\Core\Theme\ThemeManager->render('webform_progres...', Array)
#12 /var/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php(201): Drupal\Core\Render\Renderer->doRender(Array, false)
#13 /var/www/html/docroot/core/lib/Drupal/Core/Template/TwigExtension.php(479): Drupal\Core\Render\Renderer->render(Array)
#14 /var/www/html/docroot/sites/default/files/php/twig/6241e4ae3fac4_webform-confirmation.html_CzDnQbywdPzvV4UKLGr8Ovyvp/jbpqLPCKeHcMWlKbvD_cr9EviMNhjFzrCinWTMzGJ84.php(47): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#15 /var/www/html/vendor/twig/twig/src/Template.php(405): __TwigTemplate_c391182800095dd2811920e2730b506372abe5737a5ba07fdc653b6fbd00ba4b->doDisplay(Array, Array)
#16 /var/www/html/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling(Array, Array)
#17 /var/www/html/vendor/twig/twig/src/Template.php(390): Twig\Template->display(Array)
#18 /var/www/html/docroot/core/themes/engines/twig/twig.engine(55): Twig\Template->render(Array)
#19 /var/www/html/docroot/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('modules/contrib...', Array)
#20 /var/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php(422): Drupal\Core\Theme\ThemeManager->render('webform_confirm...', Array)
#21 /var/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php(201): Drupal\Core\Render\Renderer->doRender(Array, false)
#22 /var/www/html/docroot/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(241): Drupal\Core\Render\Renderer->render(Array, false)
#23 /var/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php(564): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
#24 /var/www/html/docroot/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(242): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#25 /var/www/html/docroot/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(132): Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch))
#26 /var/www/html/docroot/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))
#27 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
#28 /var/www/html/docroot/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(142): call_user_func(Array, Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
#29 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(163): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view')
#30 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(80): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#31 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#32 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#33 /var/www/html/docroot/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#34 /var/www/html/docroot/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#35 /var/www/html/vendor/asm89/stack-cors/src/Asm89/Stack/Cors.php(49): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#36 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Asm89\Stack\Cors->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#37 /var/www/html/docroot/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#38 /var/www/html/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#39 /var/www/html/docroot/core/lib/Drupal/Core/DrupalKernel.php(708): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#40 /var/www/html/docroot/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#41 {main}
)
[severity] => 3
[link] =>
[location] => http://web/questionnaire/canine-atopic-dermatitis-research/confirmation?unique_id=094-000284
[referer] => http://web/questionnaire/canine-atopic-dermatitis-research?unique_id=094-000284
[hostname] => 172.27.0.3
[timestamp] => 1648485580
)
Steps to reproduce
- Enable the webformnavigation module on a vanilla build of Drupal
- Create a multi-page webform with a confirmation page that uses forward navigation
- Create a multi-page webform with a confirmation page and the progress bar that doesn't us forward navigation
- Notice that you get the error when you navigate to the second webforms confirmation page or when you complete the second webform
Proposed resolution
Add a check to the helper function that ensures forward navigation is enabled on a form and returns NULL if a submission is not supplied.
Issue fork webformnavigation-3272071
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
rymcveighComment #4
rymcveighComment #5
lkacenjaI tested this out in a test environment. I did not encounter the error in the places I had before and webform navigation still seems to work for me where it should. Thanks!
Comment #6
rymcveighI've confirmed in a test environment as well. Thanks for the review @lkacenja
Comment #8
rymcveighThis has been merged into 2.0.x