Breeze integration
Note: this integration requires the 2.26.1 version of Breeze module because of new $.breeze.getFormKey() method.
Amazing stuff @vovayatsyuk, very grateful for this MR 😍
I've read your comment on the discussion I've started and it seems you've overcome the questions.
I am working on some improvements and I wonder if we can make this work for versions before 2.26.1. So I'll leave this PR open until that stuff gets merged in and will take a look into this also installing the theme.
In the meanwhile, could you maybe add a little component to a random page and make a quick screencast from it? Would already love to see something on screen.
Once again, great contribution and thanks for putting in the time!
Made a video of minimal component on the product page:
View video
Just stumbled with weird behavior. I see the 404 request to .../en_US/Magewirephp_Magewire/js/alpinejs.min.js on all pages except the one with Magewire block.
It's coming from alpinejs.phtml
I think for now, this is save to merge right? Some upgrades for the next beta will probably fix more stuff in terms of the 404 you've noticed. Can you confirm this can be merged?
Wanted to check if everything is ok, but "Increment" button doesn't work anymore. Request to https://magento2.test/magewire/update returns
1 exception(s):
Exception #0 (LogicException): Front controller reached 100 router match iterations
Exception #0 (LogicException): Front controller reached 100 router match iterations
<pre>#1 Magento\Framework\App\FrontController\Interceptor->___callParent() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:138]
#2 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [app/code/Magento/Store/App/FrontController/Plugin/RequestPreprocessor.php:99]
#3 Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:135]
#4 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [app/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin.php:76]
#5 Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:135]
#6 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:153]
#7 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:23]
#8 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [lib/internal/Magento/Framework/App/Http.php:116]
#9 Magento\Framework\App\Http->launch() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:58]
#10 Magento\Framework\App\Http\Interceptor->___callParent() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:138]
#11 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [app/code/Magento/ApplicationPerformanceMonitor/Plugin/ApplicationPerformanceMonitor.php:38]
#12 Magento\ApplicationPerformanceMonitor\Plugin\ApplicationPerformanceMonitor->aroundLaunch() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:135]
#13 Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}() called at [lib/internal/Magento/Framework/Interception/Interceptor.php:153]
#14 Magento\Framework\App\Http\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:23]
#15 Magento\Framework\App\Http\Interceptor->launch() called at [lib/internal/Magento/Framework/App/Bootstrap.php:264]
#16 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:30]
</pre>
Removed the outdated message
Try and see what happens when using upgrade/hc branch instead of main. Some big changes were made.
Still the same 100 router match iterations error.
It's caused by exception thrown by $this->serviceInputProcessor->convertValue: https://github.com/magewirephp/magewire/blob/upgrade/hc/src/Controller/MagewireUpdateRoute.php#L115
"Snapshot" is not supported. Correct the field name and try again.
#0 magento2/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php(355): Magento\Framework\Webapi\ServiceInputProcessor->processInputErrorForNestedSet()
#1 magento2/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php(573): Magento\Framework\Webapi\ServiceInputProcessor->_createFromArray()
#2 magento2/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php(556): Magento\Framework\Webapi\ServiceInputProcessor->processComplexTypes()
#3 magento2/vendor/magewirephp/magewire/src/Controller/MagewireUpdateRoute.php(120): Magento\Framework\Webapi\ServiceInputProcessor->convertValue()
#4 magento2/vendor/magewirephp/magewire/src/Controller/MagewireUpdateRoute.php(74): Magewirephp\Magewire\Controller\MagewireUpdateRoute->parseRequest()
#5 magento2/vendor/magewirephp/magewire/src/Controller/Router.php(34): Magewirephp\Magewire\Controller\MagewireUpdateRoute->match()
#6 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magewirephp\Magewire\Controller\Router->match()
#7 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magewirephp\Magewire\Controller\Router\Interceptor->___callParent()
#8 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magewirephp\Magewire\Controller\Router\Interceptor->Magento\Framework\Interception\{closure}()
#9 magento2/generated/code/Magewirephp/Magewire/Controller/Router/Interceptor.php(23): Magewirephp\Magewire\Controller\Router\Interceptor->___callPlugins()
#10 magento2/lib/internal/Magento/Framework/App/FrontController.php(144): Magewirephp\Magewire\Controller\Router\Interceptor->match()
#11 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch()
#12 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->___callParent()
#13 magento2/app/code/Magento/Store/App/FrontController/Plugin/RequestPreprocessor.php(99): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#14 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(135): Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch()
#15 magento2/app/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin.php(76): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#16 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(135): Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch()
#17 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#18 magento2/generated/code/Magento/Framework/App/FrontController/Interceptor.php(23): Magento\Framework\App\FrontController\Interceptor->___callPlugins()
#19 magento2/lib/internal/Magento/Framework/App/Http.php(116): Magento\Framework\App\FrontController\Interceptor->dispatch()
#20 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magento\Framework\App\Http->launch()
#21 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magento\Framework\App\Http\Interceptor->___callParent()
#22 magento2/app/code/Magento/ApplicationPerformanceMonitor/Plugin/ApplicationPerformanceMonitor.php(38): Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}()
#23 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(135): Magento\ApplicationPerformanceMonitor\Plugin\ApplicationPerformanceMonitor->aroundLaunch()
#24 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}()
#25 magento2/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http\Interceptor->___callPlugins()
#26 magento2/lib/internal/Magento/Framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#27 magento2/pub/index.php(30): Magento\Framework\App\Bootstrap->run()
#28 {main}
I've debugged further to see what caused the issue and found this Exception throwm by Magento: https://github.com/magento/magento2/blob/2.4.8-p3/lib/internal/Magento/Framework/Reflection/TypeProcessor.php#L924-L934
Each method must have a doc block.
See Magewirephp\Magewire\Mechanisms\HandleRequests\ComponentRequestContext::getSnapshot()
#0 magento2/lib/internal/Magento/Framework/Reflection/TypeProcessor.php(875): Magento\Framework\Reflection\TypeProcessor->getReturnFromDocBlock()
#1 magento2/lib/internal/Magento/Framework/Reflection/TypeProcessor.php(301): Magento\Framework\Reflection\TypeProcessor->getMethodReturnAnnotation()
#2 magento2/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php(319): Magento\Framework\Reflection\TypeProcessor->getGetterReturnType()
#3 magento2/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php(578): Magento\Framework\Webapi\ServiceInputProcessor->_createFromArray()
#4 magento2/lib/internal/Magento/Framework/Webapi/ServiceInputProcessor.php(561): Magento\Framework\Webapi\ServiceInputProcessor->processComplexTypes()
#5 magento2/vendor/magewirephp/magewire/src/Controller/MagewireUpdateRoute.php(120): Magento\Framework\Webapi\ServiceInputProcessor->convertValue()
#6 magento2/vendor/magewirephp/magewire/src/Controller/MagewireUpdateRoute.php(74): Magewirephp\Magewire\Controller\MagewireUpdateRoute->parseRequest()
#7 magento2/vendor/magewirephp/magewire/src/Controller/Router.php(34): Magewirephp\Magewire\Controller\MagewireUpdateRoute->match()
#8 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magewirephp\Magewire\Controller\Router->match()
#9 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magewirephp\Magewire\Controller\Router\Interceptor->___callParent()
#10 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magewirephp\Magewire\Controller\Router\Interceptor->Magento\Framework\Interception\{closure}()
#11 magento2/generated/code/Magewirephp/Magewire/Controller/Router/Interceptor.php(23): Magewirephp\Magewire\Controller\Router\Interceptor->___callPlugins()
#12 magento2/lib/internal/Magento/Framework/App/FrontController.php(144): Magewirephp\Magewire\Controller\Router\Interceptor->match()
#13 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magento\Framework\App\FrontController->dispatch()
#14 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magento\Framework\App\FrontController\Interceptor->___callParent()
#15 magento2/app/code/Magento/Store/App/FrontController/Plugin/RequestPreprocessor.php(99): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#16 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(135): Magento\Store\App\FrontController\Plugin\RequestPreprocessor->aroundDispatch()
#17 magento2/app/code/Magento/PageCache/Model/App/FrontController/BuiltinPlugin.php(76): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#18 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(135): Magento\PageCache\Model\App\FrontController\BuiltinPlugin->aroundDispatch()
#19 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}()
#20 magento2/generated/code/Magento/Framework/App/FrontController/Interceptor.php(23): Magento\Framework\App\FrontController\Interceptor->___callPlugins()
#21 magento2/lib/internal/Magento/Framework/App/Http.php(116): Magento\Framework\App\FrontController\Interceptor->dispatch()
#22 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(58): Magento\Framework\App\Http->launch()
#23 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(138): Magento\Framework\App\Http\Interceptor->___callParent()
#24 magento2/app/code/Magento/ApplicationPerformanceMonitor/Plugin/ApplicationPerformanceMonitor.php(38): Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}()
#25 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(135): Magento\ApplicationPerformanceMonitor\Plugin\ApplicationPerformanceMonitor->aroundLaunch()
#26 magento2/lib/internal/Magento/Framework/Interception/Interceptor.php(153): Magento\Framework\App\Http\Interceptor->Magento\Framework\Interception\{closure}()
#27 magento2/generated/code/Magento/Framework/App/Http/Interceptor.php(23): Magento\Framework\App\Http\Interceptor->___callPlugins()
#28 magento2/lib/internal/Magento/Framework/App/Bootstrap.php(264): Magento\Framework\App\Http\Interceptor->launch()
#29 magento2/pub/index.php(30): Magento\Framework\App\Bootstrap->run()
#30 {main}
I've tried if DocBlock will help:
- Adding
/** @return Snapshot */causesClass "Snapshot" does not exist - Adding
/** @return \Magewirephp\Magewire\Mechanisms\HandleComponents\Snapshot */fixes this error, but the new one occurs:Class "array" does not exist
p.s. I'm using Magento 2.4.8-p3