Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

beforeSetOrder(): Argument #3 ($dir) must be of type string, array given #2900

Closed
sippsolutions opened this issue Apr 12, 2023 · 3 comments · Fixed by #2903
Closed

beforeSetOrder(): Argument #3 ($dir) must be of type string, array given #2900

sippsolutions opened this issue Apr 12, 2023 · 3 comments · Fixed by #2903

Comments

@sippsolutions
Copy link
Contributor

Preconditions

Magento Version : 2.4.6

ElasticSuite Version : 2.11.0

Environment : Developer

Steps to reproduce

  1. Open CMS Page with ProductList Widget

Expected result

  1. The product list is rendered

Actual result

  1. Exception is thrown

TypeError: Magento\InventoryCatalog\Plugin\Catalog\Model\ResourceModel\Product\CollectionPlugin::beforeSetOrder(): Argument #3 ($dir) must be of type string, array given, called in vendor/magento/framework/Interception/Interceptor.php on line 121 and defined in vendor/magento/module-inventory-catalog/Plugin/Catalog/Model/ResourceModel/Product/CollectionPlugin.php:61
Stack trace:
#0 vendor/magento/framework/Interception/Interceptor.php(121): Magento\InventoryCatalog\Plugin\Catalog\Model\ResourceModel\Product\CollectionPlugin->beforeSetOrder(Object(Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor), '_script', Array)
#1 vendor/magento/framework/Interception/Interceptor.php(153): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->Magento\Framework\Interception\{closure}('_script', Array)
#2 generated/code/Smile/ElasticsuiteCatalog/Model/ResourceModel/Product/Fulltext/Collection/Interceptor.php(41): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->___callPlugins('setOrder', Array, Array)
#3 vendor/smile/elasticsuite/src/module-elasticsuite-virtual-category/Plugin/Widget/ProductsListPlugin.php(148): Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor->setOrder('_script', Array)
#4 vendor/magento/framework/Interception/Interceptor.php(146): Smile\ElasticsuiteVirtualCategory\Plugin\Widget\ProductsListPlugin->afterCreateCollection(Object(Magento\CatalogWidget\Block\Product\ProductsList\Interceptor), Object(Smile\ElasticsuiteCatalog\Model\ResourceModel\Product\Fulltext\Collection\Interceptor))
#5 vendor/magento/framework/Interception/Interceptor.php(153): Magento\CatalogWidget\Block\Product\ProductsList\Interceptor->Magento\Framework\Interception\{closure}()
#6 generated/code/Magento/CatalogWidget/Block/Product/ProductsList/Interceptor.php(50): Magento\CatalogWidget\Block\Product\ProductsList\Interceptor->___callPlugins('createCollectio...', Array, Array)
#7 vendor/magento/module-catalog-widget/Block/Product/ProductsList.php(314): Magento\CatalogWidget\Block\Product\ProductsList\Interceptor->createCollection()
#8 vendor/magento/framework/View/Element/AbstractBlock.php(1094): Magento\CatalogWidget\Block\Product\ProductsList->_beforeToHtml()
#9 vendor/magento/framework/Cache/LockGuardedCacheLoader.php(136): Magento\Framework\View\Element\AbstractBlock->Magento\Framework\View\Element\{closure}()
#10 vendor/magento/framework/View/Element/AbstractBlock.php(1117): Magento\Framework\Cache\LockGuardedCacheLoader->lockedLoadData('BLOCK_aa2d3358e...', Object(Closure), Object(Closure), Object(Closure))
#11 vendor/magento/framework/View/Element/AbstractBlock.php(660): Magento\Framework\View\Element\AbstractBlock->_loadCache()
#12 generated/code/Magento/CatalogWidget/Block/Product/ProductsList/Interceptor.php(581): Magento\Framework\View\Element\AbstractBlock->toHtml()
#13 vendor/magento/module-widget/Model/Template/Filter.php(156): Magento\CatalogWidget\Block\Product\ProductsList\Interceptor->toHtml()
#14 generated/code/Magento/Widget/Model/Template/Filter/Interceptor.php(23): Magento\Widget\Model\Template\Filter->generateWidget(Array)
#15 vendor/magento/module-widget/Model/Template/Filter.php(167): Magento\Widget\Model\Template\Filter\Interceptor->generateWidget(Array)
#16 generated/code/Magento/Widget/Model/Template/Filter/Interceptor.php(32): Magento\Widget\Model\Template\Filter->widgetDirective(Array)
#17 [internal function]: Magento\Widget\Model\Template\Filter\Interceptor->widgetDirective(Array)
#18 vendor/magento/framework/Filter/DirectiveProcessor/LegacyDirective.php(42): ReflectionMethod->invokeArgs(Object(Magento\Widget\Model\Template\Filter\Interceptor), Array)
#19 vendor/magento/framework/Filter/Template.php(272): Magento\Framework\Filter\DirectiveProcessor\LegacyDirective->process(Array, Object(Magento\Widget\Model\Template\Filter\Interceptor), Array)
#20 vendor/magento/framework/Filter/Template.php(206): Magento\Framework\Filter\Template->processDirectives('<style>#html-bo...')
#21 vendor/magento/module-email/Model/Template/Filter.php(1116): Magento\Framework\Filter\Template->filter('<style>#html-bo...')
#22 vendor/magento/framework/Interception/Interceptor.php(58): Magento\Email\Model\Template\Filter->filter('<style>#html-bo...')
#23 vendor/magento/framework/Interception/Interceptor.php(138): Magento\Widget\Model\Template\Filter\Interceptor->___callParent('filter', Array)
#24 vendor/magento/framework/Interception/Interceptor.php(153): Magento\Widget\Model\Template\Filter\Interceptor->Magento\Framework\Interception\{closure}('<style>#html-bo...')
#25 generated/code/Magento/Widget/Model/Template/Filter/Interceptor.php(284): Magento\Widget\Model\Template\Filter\Interceptor->___callPlugins('filter', Array, Array)
#26 vendor/magento/module-cms/Block/Page.php(166): Magento\Widget\Model\Template\Filter\Interceptor->filter('<style>#html-bo...')
#27 vendor/magento/framework/View/Element/AbstractBlock.php(1095): Magento\Cms\Block\Page->_toHtml()
#28 vendor/magento/framework/View/Element/AbstractBlock.php(1099): Magento\Framework\View\Element\AbstractBlock->Magento\Framework\View\Element\{closure}()
#29 vendor/magento/framework/View/Element/AbstractBlock.php(660): Magento\Framework\View\Element\AbstractBlock->_loadCache()
#30 vendor/magento/framework/View/Layout.php(578): Magento\Framework\View\Element\AbstractBlock->toHtml()
#31 vendor/magento/framework/View/Layout.php(555): Magento\Framework\View\Layout->_renderBlock('cms_page')
#32 generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('cms_page')
#33 vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('cms_page')
#34 generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('cms_page', false)
#35 vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('cms_page', false)
#36 vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('content', false)
#37 generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('content')
#38 vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('content')
#39 generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('content', false)
#40 vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('content', false)
#41 vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('main', false)
#42 generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('main')
#43 vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main')
#44 generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('main', false)
#45 vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('main', false)
#46 vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('columns', false)
#47 generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('columns')
#48 vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('columns')
#49 generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('columns', false)
#50 vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('columns', false)
#51 vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('main.content', false)
#52 generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('main.content')
#53 vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main.content')
#54 generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('main.content', false)
#55 vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('main.content', false)
#56 vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('page.wrapper', false)
#57 generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#58 vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#59 generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('page.wrapper', false)
#60 vendor/magento/framework/View/Layout.php(606): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper', false)
#61 vendor/magento/framework/View/Layout.php(557): Magento\Framework\View\Layout->_renderContainer('root', false)
#62 generated/code/Magento/Framework/View/Layout/Interceptor.php(149): Magento\Framework\View\Layout->renderNonCachedElement('root')
#63 vendor/magento/framework/View/Layout.php(510): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#64 generated/code/Magento/Framework/View/Layout/Interceptor.php(140): Magento\Framework\View\Layout->renderElement('root', true)
#65 vendor/magento/framework/View/Layout.php(975): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#66 vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\View\Layout->getOutput()
#67 vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\View\Layout\Interceptor->___callParent('getOutput', Array)
#68 vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\View\Layout\Interceptor->Magento\Framework\Interception\{closure}()
#69 generated/code/Magento/Framework/View/Layout/Interceptor.php(347): Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput', Array, Array)
#70 vendor/magento/framework/View/Result/Page.php(260): Magento\Framework\View\Layout\Interceptor->getOutput()
#71 vendor/magento/framework/View/Result/Layout.php(171): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#72 vendor/magento/framework/Interception/Interceptor.php(58): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#73 vendor/magento/framework/Interception/Interceptor.php(138): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array)
#74 vendor/magento/framework/Interception/Interceptor.php(153): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#75 generated/code/Magento/Framework/View/Result/Page/Interceptor.php(95): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#76 vendor/magento/framework/App/Http.php(120): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#77 generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http->launch()
#78 vendor/magento/framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#79 pub/index.php(30): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#80 {main}

$dir =


Array
(
    [lang] => painless
    [scriptType] => number
    [source] => if(params.scores.containsKey(doc['_id'].value)) { return params.scores[doc['_id'].value];} return 922337203685477600L
    [params] => Array
        (
            [scores] => Array
                (
                    [283741] => 1
                    [290220] => 2
                    [284821] => 3
                    [279481] => 4
                    [288277] => 5
                    [283734] => 6
                    [287820] => 7
                    [285832] => 8
                    [279615] => 9
                    [278835] => 10
                    [279663] => 11
                    [285261] => 12
                    [279664] => 13
                    [278765] => 14
                    [286340] => 15
                    [286622] => 16
                    [286624] => 17
                    [287281] => 18
                    [287821] => 19
                    [280869] => 20
                    [284822] => 21
                    [284823] => 22
                    [284824] => 23
                    [281036] => 24
                    [284825] => 25
                    [289910] => 26
                    [288276] => 27
                    [288546] => 28
                )

        )

    [direction] => asc
)

@sippsolutions
Copy link
Contributor Author

Seems to be related to #2774 #2772 796226c but the plugin is no longer named update_toolbar_count.
The related plugin is defined as <plugin name="outOfStockSorting" type="Magento\InventoryCatalog\Plugin\Catalog\Model\ResourceModel\Product\CollectionPlugin"/> in vendor/magento/module-inventory-catalog/etc/di.xml

@romainruaud
Copy link
Collaborator

yeah... and this plugin is just pure crap... we'll need to disable again...

Regards, thank you for rerporting this.

@rhoerr
Copy link

rhoerr commented Apr 27, 2023

Note this fix doesn't work in the presence of https://github.com/creatuity/magento2-interceptors because it's defined in the global scope (etc/di.xml) but disabled in the frontend scope. I had to copy the disable lines to a module's etc/di.xml for it to take effect.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants