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

  1. Enable the webformnavigation module on a vanilla build of Drupal
  2. Create a multi-page webform with a confirmation page that uses forward navigation
  3. Create a multi-page webform with a confirmation page and the progress bar that doesn't us forward navigation
  4. 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.

Command icon 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

rymcveigh created an issue. See original summary.

rymcveigh’s picture

Title: Breaking error on webforms that use » Breaking error on webforms that do not use forward navigation

rymcveigh’s picture

Status: Active » Needs review
lkacenja’s picture

Status: Needs review » Reviewed & tested by the community

I 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!

rymcveigh’s picture

Status: Reviewed & tested by the community » Patch (to be ported)

I've confirmed in a test environment as well. Thanks for the review @lkacenja

  • rymcveigh committed c2ef826 on 8.x-1.x
    Issue #3272071 by rymcveigh: Breaking error on webforms that do not use...
rymcveigh’s picture

Status: Reviewed & tested by the community » Fixed

This has been merged into 2.0.x

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.