Smile-SA / elasticsuite

Smile ElasticSuite - Magento 2 merchandising and search engine built on ElasticSearch
https://elasticsuite.io
Open Software License 3.0
761 stars 341 forks source link

TypeError in combination of a 404 page with product slider widget #2815

Closed sippsolutions closed 1 year ago

sippsolutions commented 1 year ago

Preconditions

Magento Version : 2.4.5-p1 ElasticSuite Version : 2.10.12.1 Environment : Production Third party modules : no

Steps to reproduce

  1. Install Magento Commerce 2.4.5-p1
  2. Install Sample Data
  3. Install and configure Smile ES >= 2.10.12.1
  4. Configure product and category page suffix from ".html" (default) to "" (empty)
  5. Edit 404 page via Backend: Add a "Products" page builder content widget > "Product carousel", select category "Gear", Save
  6. Verify your 404 page has a product carousel under a "normal" url (https://demo245.test/xyztest404)
  7. Open https://demo245.test/default/a/b/c//d (any combination of a non-existing third-level structure after the store code with a string prefixed with double-slash works)

Expected result

  1. 404 page renders without any error

Actual result

  1. Error page is displayed as somehow the product slider tries the "d" after the double-slash as current page number
    TypeError: Unsupported operand types: string + int in /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Data/Collection.php:245
Stack trace:
#0 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\Data\Collection->getCurPage()
#1 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(138): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->___callParent('getCurPage', Array)
#2 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(153): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->Magento\Framework\Interception\{closure}()
#3 /Volumes/workspace/demo/demo245/src/generated/code/Smile/ElasticsuiteCatalog/Model/ResourceModel/Product/Fulltext/Collection/Interceptor.php(1202): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->___callPlugins('getCurPage', Array, Array)
#4 /Volumes/workspace/demo/demo245/src/vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Model/ResourceModel/Product/Fulltext/Collection.php(678): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->getCurPage()
#5 /Volumes/workspace/demo/demo245/src/vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Model/ResourceModel/Product/Fulltext/Collection.php(519): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection->prepareRequest()
#6 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Data/Collection/AbstractDb.php(343): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection->_renderFiltersBefore()
#7 /Volumes/workspace/demo/demo245/src/vendor/smile/elasticsuite/src/module-elasticsuite-catalog/Model/ResourceModel/Product/Fulltext/Collection.php(576): Magento\Framework\Data\Collection\AbstractDb->_renderFilters()
#8 /Volumes/workspace/demo/demo245/src/vendor/magento/module-eav/Model/Entity/Collection/AbstractCollection.php(929): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection->_renderFilters()
#9 /Volumes/workspace/demo/demo245/src/vendor/magento/module-catalog/Model/ResourceModel/Product/Collection.php(801): Magento\Eav\Model\Entity\Collection\AbstractCollection->load(false, false)
#10 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Catalog\Model\ResourceModel\Product\Collection->load(false, false)
#11 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(138): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->___callParent('load', Array)
#12 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(153): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->Magento\Framework\Interception\{closure}()
#13 /Volumes/workspace/demo/demo245/src/generated/code/Smile/ElasticsuiteCatalog/Model/ResourceModel/Product/Fulltext/Collection/Interceptor.php(338): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->___callPlugins('load', Array, Array)
#14 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Data/Collection.php(333): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->load()
#15 /Volumes/workspace/demo/demo245/src/generated/code/Smile/ElasticsuiteCatalog/Model/ResourceModel/Product/Fulltext/Collection/Interceptor.php(1229): Magento\Framework\Data\Collection->getItems()
#16 /Volumes/workspace/demo/demo245/src/vendor/magento/module-page-builder/view/frontend/templates/catalog/product/widget/content/carousel.phtml(25): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->getItems()
#17 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/TemplateEngine/Php.php(71): include('/Volumes/worksp...')
#18 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/Template.php(263): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\CatalogWidget\Block\Product\ProductsList\Interceptor), '/Volumes/worksp...', Array)
#19 /Volumes/workspace/demo/demo245/src/generated/code/Magento/CatalogWidget/Block/Product/ProductsList/Interceptor.php(365): Magento\Framework\View\Element\Template->fetchView('/Volumes/worksp...')
#20 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/Template.php(293): Magento\CatalogWidget\Block\Product\ProductsList\Interceptor->fetchView('/Volumes/worksp...')
#21 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/AbstractBlock.php(1095): Magento\Framework\View\Element\Template->_toHtml()
#22 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Cache/LockGuardedCacheLoader.php(136): Magento\Framework\View\Element\AbstractBlock->Magento\Framework\View\Element\{closure}()
#23 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/AbstractBlock.php(1117): Magento\Framework\Cache\LockGuardedCacheLoader->lockedLoadData('BLOCK_1d1d9579e...', Object(Closure), Object(Closure), Object(Closure))
#24 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/AbstractBlock.php(660): Magento\Framework\View\Element\AbstractBlock->_loadCache()
#25 /Volumes/workspace/demo/demo245/src/generated/code/Magento/CatalogWidget/Block/Product/ProductsList/Interceptor.php(581): Magento\Framework\View\Element\AbstractBlock->toHtml()
#26 /Volumes/workspace/demo/demo245/src/vendor/magento/module-widget/Model/Template/Filter.php(156): Magento\CatalogWidget\Block\Product\ProductsList\Interceptor->toHtml()
#27 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Widget/Model/Template/Filter/Interceptor.php(23): Magento\Widget\Model\Template\Filter->generateWidget(Array)
#28 /Volumes/workspace/demo/demo245/src/vendor/magento/module-widget/Model/Template/Filter.php(167): Magento\Widget\Model\Template\Filter\Interceptor->generateWidget(Array)
#29 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Widget/Model/Template/Filter/Interceptor.php(32): Magento\Widget\Model\Template\Filter->widgetDirective(Array)
#30 [internal function]: Magento\Widget\Model\Template\Filter\Interceptor->widgetDirective(Array)
#31 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Filter/DirectiveProcessor/LegacyDirective.php(42): ReflectionMethod->invokeArgs(Object(Magento\Widget\Model\Template\Filter\Interceptor), Array)
#32 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Filter/Template.php(274): Magento\Framework\Filter\DirectiveProcessor\LegacyDirective->process(Array, Object(Magento\Widget\Model\Template\Filter\Interceptor), Array)
#33 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Filter/Template.php(208): Magento\Framework\Filter\Template->processDirectives('<style>#html-bo...')
#34 /Volumes/workspace/demo/demo245/src/vendor/magento/module-email/Model/Template/Filter.php(1116): Magento\Framework\Filter\Template->filter('<style>#html-bo...')
#35 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Email\Model\Template\Filter->filter('<style>#html-bo...')
#36 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Widget\Model\Template\Filter\Interceptor->___callParent('filter', Array)
#37 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Widget\Model\Template\Filter\Interceptor->Magento\Framework\Interception\{closure}('<style>#html-bo...')
#38 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Widget/Model/Template/Filter/Interceptor.php(284): Magento\Widget\Model\Template\Filter\Interceptor->___callPlugins('filter', Array, Array)
#39 /Volumes/workspace/demo/demo245/src/vendor/magento/module-cms/Block/Page.php(166): Magento\Widget\Model\Template\Filter\Interceptor->filter('<style>#html-bo...')
#40 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/AbstractBlock.php(1095): Magento\Cms\Block\Page->_toHtml()
#41 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/AbstractBlock.php(1099): Magento\Framework\View\Element\AbstractBlock->Magento\Framework\View\Element\{closure}()
#42 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Element/AbstractBlock.php(660): Magento\Framework\View\Element\AbstractBlock->_loadCache()
#43 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(578): Magento\Framework\View\Element\AbstractBlock->toHtml()
#44 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(555): Magento\Framework\View\Layout->_renderBlock('cms_page')
#45 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('cms_page')
#46 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('cms_page')
#47 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('cms_page', false)
#48 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('cms_page', false)
#49 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('content', false)
#50 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('content')
#51 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('content')
#52 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('content', false)
#53 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('content', false)
#54 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('main', false)
#55 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('main')
#56 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main')
#57 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('main', false)
#58 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('main', false)
#59 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('columns', false)
#60 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('columns')
#61 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('columns')
#62 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('columns', false)
#63 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('columns', false)
#64 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('main.content', false)
#65 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('main.content')
#66 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main.content')
#67 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('main.content', false)
#68 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('main.content', false)
#69 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('page.wrapper', false)
#70 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#71 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#72 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('page.wrapper', false)
#73 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper', false)
#74 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('root', false)
#75 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('root')
#76 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#77 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('root', true)
#78 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Layout.php(975): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#79 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\View\Layout->getOutput()
#80 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\View\Layout\Interceptor->___callParent('getOutput', Array)
#81 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}()
#82 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Layout/Interceptor.php(347): Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput', Array, Array)
#83 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Result/Page.php(260): Magento\Framework\View\Layout\Interceptor->getOutput()
#84 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/View/Result/Layout.php(171): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#85 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#86 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array)
#87 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#88 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/View/Result/Page/Interceptor.php(95): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#89 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/App/Http.php(120): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#90 /Volumes/workspace/demo/demo245/src/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http->launch()
#91 /Volumes/workspace/demo/demo245/src/vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#92 /Volumes/workspace/demo/demo245/src/pub/index.php(30): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#93 {main}

Regular 404

Broken 404

vahonc commented 1 year ago

Hello @sippsolutions

Your scenario is very specific for reproducing or using by our customer, so it's a little bit low priority for us. Especially based on the fact that you got the correct results in the 6 steps. I'm not even sure if this case is really related to some problems caused by our module or it's Magento legacy.

Have you tried to reproduce this on the environment without ElasticSuite?

BR, Vadym

github-actions[bot] commented 1 year ago

This issue was waiting update from the author for too long. Without any update, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away! Thanks for your contribution.