Warning: foreach() argument must be of type array|object GTranslateBlock.php

Created on 28 March 2023, about 1 year ago
Updated 28 February 2024, 4 months ago

Problem/Motivation

Installing GTranslate on Drupal 10.0.7 results in error

Warning: foreach() argument must be of type array|object, string given in Drupal\gtranslate\Plugin\Block\GTranslateBlock->build() (line 370 of /web/modules/contrib/gtranslate/src/Plugin/Block/GTranslateBlock.php)

PHP 8.1.13. Anyone else suffering from this?

Thanks,

Full warning trace -

Warning: foreach() argument must be of type array|object, string given in Drupal\gtranslate\Plugin\Block\GTranslateBlock->build() (line 370 of /web/modules/contrib/gtranslate/src/Plugin/Block/GTranslateBlock.php)
#0 /web/core/includes/bootstrap.inc(158): _drupal_error_handler_real(2, 'foreach() argum...', '/Users/danltray...', 370)
#1 /web/modules/contrib/gtranslate/src/Plugin/Block/GTranslateBlock.php(370): _drupal_error_handler(2, 'foreach() argum...', '/Users/danltray...', 370)
#2 /web/core/modules/block/src/BlockViewBuilder.php(171): Drupal\gtranslate\Plugin\Block\GTranslateBlock->build()
#3 [internal function]: Drupal\block\BlockViewBuilder::preRender(Array)
#4 /web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(101): call_user_func_array(Array, Array)
#5 /web/core/lib/Drupal/Core/Render/Renderer.php(788): Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_ren...', 'exception', 'Drupal\\Core\\Ren...')
#6 /web/core/lib/Drupal/Core/Render/Renderer.php(374): Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array)
#7 /web/core/lib/Drupal/Core/Render/Renderer.php(446): Drupal\Core\Render\Renderer->doRender(Array)
#8 /web/core/lib/Drupal/Core/Render/Renderer.php(204): Drupal\Core\Render\Renderer->doRender(Array, false)
#9 /web/core/lib/Drupal/Core/Template/TwigExtension.php(477): Drupal\Core\Render\Renderer->render(Array)
#10 /web/sites/default/files/php/twig/6422f1ea06520_page--front.html.twig_VqbkoD_Q1U2nFs4HKkSPr2gHh/M6yav6uR9vdhvHmqBErAXZ8BMAHxa_1r1xbCnI-6vgA.php(51): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#11 /vendor/twig/twig/src/Template.php(394): __TwigTemplate_cc1e2b8a447515b6e2a40c9576eaa1f4->doDisplay(Array, Array)
#12 /vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling(Array, Array)
#13 /vendor/twig/twig/src/Template.php(379): Twig\Template->display(Array)
#14 /vendor/twig/twig/src/TemplateWrapper.php(40): Twig\Template->render(Array, Array)
#15 /web/core/themes/engines/twig/twig.engine(53): Twig\TemplateWrapper->render(Array)
#16 /web/core/lib/Drupal/Core/Theme/ThemeManager.php(372): twig_render_template('themes/custom/p...', Array)
#17 /web/core/lib/Drupal/Core/Render/Renderer.php(433): Drupal\Core\Theme\ThemeManager->render('page', Array)
#18 /web/core/lib/Drupal/Core/Render/Renderer.php(204): Drupal\Core\Render\Renderer->doRender(Array, false)
#19 /web/core/lib/Drupal/Core/Template/TwigExtension.php(477): Drupal\Core\Render\Renderer->render(Array)
#20 /web/sites/default/files/php/twig/6422f1ea06520_html.html.twig_ahMX9_OmmIyVXxZtbO4NdGnRG/JfDNkHY_G7w7rODL7Mc5ToUJKRf-T3CdNedGvEnFHtA.php(106): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
#21 /vendor/twig/twig/src/Template.php(394): __TwigTemplate_c12b685e717210ea68ce551650dfe322->doDisplay(Array, Array)
#22 /vendor/twig/twig/src/Template.php(367): Twig\Template->displayWithErrorHandling(Array, Array)
#23 /vendor/twig/twig/src/Template.php(379): Twig\Template->display(Array)
#24 /vendor/twig/twig/src/TemplateWrapper.php(40): Twig\Template->render(Array, Array)
#25 /web/core/themes/engines/twig/twig.engine(53): Twig\TemplateWrapper->render(Array)
#26 /web/core/lib/Drupal/Core/Theme/ThemeManager.php(372): twig_render_template('themes/custom/p...', Array)
#27 /web/core/lib/Drupal/Core/Render/Renderer.php(433): Drupal\Core\Theme\ThemeManager->render('html', Array)
#28 /web/core/lib/Drupal/Core/Render/Renderer.php(204): Drupal\Core\Render\Renderer->doRender(Array, false)
#29 /web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(158): Drupal\Core\Render\Renderer->render(Array)
#30 /web/core/lib/Drupal/Core/Render/Renderer.php(580): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
#31 /web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(159): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
#32 /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))
#33 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
#34 /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))
#35 /vendor/symfony/http-kernel/HttpKernel.php(168): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view')
#36 /vendor/symfony/http-kernel/HttpKernel.php(74): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#37 /web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#38 /web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#39 /web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#40 /web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#41 /web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#42 /web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#43 /web/core/lib/Drupal/Core/StackMiddleware/StackedHttpKernel.php(51): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#44 /web/core/lib/Drupal/Core/DrupalKernel.php(686): Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#45 /web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#46 {main}
🐛 Bug report
Status

RTBC

Version

3.0

Component

Code

Created by

🇬🇧United Kingdom Hitby

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

Comments & Activities

  • Issue created by @Hitby
  • Status changed to Needs review about 1 year ago
  • 🇺🇸United States bill_redman

    I am running D9.5.7 & PHP 8.1.14 and was receiving the warning noted in this issue. I then applied the patch in #3 but it did not resolve the problem. Instead, it resulted in a new error when I try to view the site. Full trace follows:

    TypeError: array_values(): Argument #1 ($array) must be of type array, null given in array_values() (line 385 of /code/web/modules/composer/gtranslate/src/Plugin/Block/GTranslateBlock.php)
    #0 /code/web/modules/composer/gtranslate/src/Plugin/Block/GTranslateBlock.php(385): array_values(NULL)
    #1 /code/web/core/modules/block/src/BlockViewBuilder.php(171): Drupal\gtranslate\Plugin\Block\GTranslateBlock->build()
    #2 [internal function]: Drupal\block\BlockViewBuilder::preRender(Array)
    #3 /code/web/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php(101): call_user_func_array(Array, Array)
    #4 /code/web/core/lib/Drupal/Core/Render/Renderer.php(788): Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_ren...', 'exception', 'Drupal\\Core\\Ren...')
    #5 /code/web/core/lib/Drupal/Core/Render/Renderer.php(374): Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array)
    #6 /code/web/core/lib/Drupal/Core/Render/Renderer.php(446): Drupal\Core\Render\Renderer->doRender(Array)
    #7 /code/web/core/lib/Drupal/Core/Render/Renderer.php(204): Drupal\Core\Render\Renderer->doRender(Array, false)
    #8 /code/web/core/lib/Drupal/Core/Template/TwigExtension.php(479): Drupal\Core\Render\Renderer->render(Array)
    #9 /tmp/rolling/0b8bbd3/twig/642ed7ecae20a_page.html.twig_jod-O8i4TQnhYu4BU5Poqv1d3/UUPFVvXA-EMU2aa171IsKyhTXPFsfS-a96nsxJz4odw.php(51): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
    #10 /code/vendor/twig/twig/src/Template.php(405): __TwigTemplate_5d0be2524ad31eab9c86f4f6c4c40ed6->doDisplay(Array, Array)
    #11 /code/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling(Array, Array)
    #12 /code/vendor/twig/twig/src/Template.php(390): Twig\Template->display(Array)
    #13 /code/web/core/themes/engines/twig/twig.engine(55): Twig\Template->render(Array)
    #14 /code/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/professi...', Array)
    #15 /code/web/core/lib/Drupal/Core/Render/Renderer.php(433): Drupal\Core\Theme\ThemeManager->render('page', Array)
    #16 /code/web/core/lib/Drupal/Core/Render/Renderer.php(204): Drupal\Core\Render\Renderer->doRender(Array, false)
    #17 /code/web/core/lib/Drupal/Core/Template/TwigExtension.php(479): Drupal\Core\Render\Renderer->render(Array)
    #18 /tmp/rolling/0b8bbd3/twig/642ed7ecae20a_html.html.twig_vB85B8YBCzHCJFi3sUmfz3yYn/EPqyBhT_Yuh6g3nsZLDt8y7Ak6YTmyfg5WS0QUHAWJY.php(84): Drupal\Core\Template\TwigExtension->escapeFilter(Object(Drupal\Core\Template\TwigEnvironment), Array, 'html', NULL, true)
    #19 /code/vendor/twig/twig/src/Template.php(405): __TwigTemplate_925d292f0ae928418ef973f4ad096b6a->doDisplay(Array, Array)
    #20 /code/vendor/twig/twig/src/Template.php(378): Twig\Template->displayWithErrorHandling(Array, Array)
    #21 /code/vendor/twig/twig/src/Template.php(390): Twig\Template->display(Array)
    #22 /code/web/core/themes/engines/twig/twig.engine(55): Twig\Template->render(Array)
    #23 /code/web/core/lib/Drupal/Core/Theme/ThemeManager.php(384): twig_render_template('themes/professi...', Array)
    #24 /code/web/core/lib/Drupal/Core/Render/Renderer.php(433): Drupal\Core\Theme\ThemeManager->render('html', Array)
    #25 /code/web/core/lib/Drupal/Core/Render/Renderer.php(204): Drupal\Core\Render\Renderer->doRender(Array, false)
    #26 /code/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(162): Drupal\Core\Render\Renderer->render(Array)
    #27 /code/web/core/lib/Drupal/Core/Render/Renderer.php(580): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}()
    #28 /code/web/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(163): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure))
    #29 /code/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))
    #30 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher))
    #31 /code/web/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))
    #32 /code/vendor/symfony/http-kernel/HttpKernel.php(174): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object(Symfony\Component\HttpKernel\Event\ViewEvent), 'kernel.view')
    #33 /code/vendor/symfony/http-kernel/HttpKernel.php(81): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
    #34 /code/web/modules/composer/redirect_after_login/src/RedirectMiddleware.php(46): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #35 /code/web/core/lib/Drupal/Core/StackMiddleware/Session.php(58): Drupal\redirect_after_login\RedirectMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #36 /code/web/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(48): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #37 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #38 /code/web/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #39 /code/web/core/modules/ban/src/BanMiddleware.php(50): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #40 /code/web/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(48): Drupal\ban\BanMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #41 /code/web/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(51): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #42 /code/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #43 /code/web/core/lib/Drupal/Core/DrupalKernel.php(718): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
    #44 /code/web/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request))
    #45 {main}

    I can view my site normally if I disable the GTranslate block.

    Any thoughts?

  • 🇺🇸United States mmarler

    Looks like the configuration settings have completely changed in the 3.0.1 version. To fix this error, import the new configuration settings in gtranslate.settings.yml. You'll then need to reconfigure the settings.

  • 🇺🇸United States bill_redman

    @mmarler, thanks for the information. Since I'm in the process of upgrading my site to D10, I'm going to deal with this after that's done.

  • First commit to issue fork.
  • @robloach opened merge request.
  • 🇨🇦Canada RobLoach Earth

    Updated with a few more fixes over at the MR at https://git.drupalcode.org/project/gtranslate/-/merge_requests/12 . Increasing priority since Drupal 10 is the new hawtness, and so is PHP 8.3.

    Patch: https://git.drupalcode.org/project/gtranslate/-/merge_requests/12.diff

  • 🇺🇸United States MediaNut

    #9 Patch worked for me. Thank you!

  • Assigned to agunjan085
  • Issue was unassigned.
  • Status changed to RTBC about 1 year ago
  • 🇺🇸United States hockey2112

    Patch in #9 worked for me as well.

  • 🇮🇳India abhisekmazumdar India

    I can confirm that after I upgraded this module from `drupal/gtranslate` 1.15.0 to 3.0.1 with Drupal 9.5, I am experiencing the mentioned WSFD with these error messages.

    Applying these patches resolves the issue.

  • 🇺🇸United States AaronBauman Philadelphia

    3.0.1 version causes a WSOD and this patch fixes it.
    RTBC+1

    please commit

  • 🇬🇧United Kingdom Londova

    @edo888
    Is anybody capable to release a new version with this issue updated?
    It's a shame to have the solution and not update the module for 4 month.

Production build 0.69.0 2024