I got this error, what is this error and how can i fix this.
1 exception(s): Exception #0 (Magento\Framework\Exception\RuntimeException): Type Error occurred when creating object: Rakuten\MemberCard\Block\Adminhtml\Card\Import, Magento\Backend\Block\Widget\Form\Generic::__construct(): Argument #2 ($registry) must be of type Magento\Framework\Registry, array given, called in /var/www/html/rakuten_magento/app/code/Rakuten/MemberCard/Block/Adminhtml/Card/Import.php on line 23 Exception #0 (Magento\Framework\Exception\RuntimeException): Type Error occurred when creating object: Rakuten\MemberCard\Block\Adminhtml\Card\Import, Magento\Backend\Block\Widget\Form\Generic::__construct(): Argument #2 ($registry) must be of type Magento\Framework\Registry, array given, called in /var/www/html/rakuten_magento/app/code/Rakuten/MemberCard/Block/Adminhtml/Card/Import.php on line 23 <pre>#1 Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create() called at [vendor/magento/framework/ObjectManager/ObjectManager.php:56] #2 Magento\Framework\ObjectManager\ObjectManager->create() called at [vendor/magento/framework/View/Element/BlockFactory.php:44] #3 Magento\Framework\View\Element\BlockFactory->createBlock() called at [vendor/magento/framework/View/Layout/Generator/Block.php:272] #4 Magento\Framework\View\Layout\Generator\Block->getBlockInstance() called at [vendor/magento/framework/View/Layout/Generator/Block.php:252] #5 Magento\Framework\View\Layout\Generator\Block->createBlock() called at [vendor/magento/framework/View/Layout/Generator/Block.php:229] #6 Magento\Framework\View\Layout\Generator\Block->generateBlock() called at [vendor/magento/framework/View/Layout/Generator/Block.php:134] #7 Magento\Framework\View\Layout\Generator\Block->process() called at [vendor/magento/framework/View/Layout/GeneratorPool.php:93] #8 Magento\Framework\View\Layout\GeneratorPool->process() called at [vendor/magento/framework/View/Layout.php:365] #9 Magento\Framework\View\Layout->generateElements() called at [generated/code/Magento/Framework/View/Layout/Interceptor.php:68] #10 Magento\Framework\View\Layout\Interceptor->generateElements() called at [vendor/magento/framework/View/Layout/Builder.php:129] #11 Magento\Framework\View\Layout\Builder->generateLayoutBlocks() called at [vendor/magento/framework/View/Page/Builder.php:65] #12 Magento\Framework\View\Page\Builder->generateLayoutBlocks() called at [vendor/magento/framework/View/Layout/Builder.php:65] #13 Magento\Framework\View\Layout\Builder->build() called at [vendor/magento/framework/View/Page/Config.php:227] #14 Magento\Framework\View\Page\Config->build() called at [vendor/magento/framework/View/Page/Config.php:250] #15 Magento\Framework\View\Page\Config->getTitle() called at [app/code/Rakuten/MemberCard/Controller/Adminhtml/Card/Import.php:32] #16 Rakuten\MemberCard\Controller\Adminhtml\Card\Import->execute() called at [vendor/magento/framework/Interception/Interceptor.php:58] #17 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138] #18 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153] #19 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->___callPlugins() called at [generated/code/Rakuten/MemberCard/Controller/Adminhtml/Card/Import/Interceptor.php:23] #20 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->execute() called at [vendor/magento/framework/App/Action/Action.php:111] #21 Magento\Framework\App\Action\Action->dispatch() called at [vendor/magento/module-backend/App/AbstractAction.php:151] #22 Magento\Backend\App\AbstractAction->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58] #23 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138] #24 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/module-backend/App/Action/Plugin/Authentication.php:145] #25 Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch() called at [vendor/magento/framework/Interception/Interceptor.php:135] #26 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153] #27 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->___callPlugins() called at [generated/code/Rakuten/MemberCard/Controller/Adminhtml/Card/Import/Interceptor.php:32] #28 Rakuten\MemberCard\Controller\Adminhtml\Card\Import\Interceptor->dispatch() called at [vendor/magento/framework/App/FrontController.php:245] #29 Magento\Framework\App\FrontController->getActionResponse() called at [vendor/magento/framework/App/FrontController.php:212] #30 Magento\Framework\App\FrontController->processRequest() called at [vendor/magento/framework/App/FrontController.php:147] #31 Magento\Framework\App\FrontController->dispatch() called at [vendor/magento/framework/Interception/Interceptor.php:58] #32 Magento\Framework\App\FrontController\Interceptor->___callParent() called at [vendor/magento/framework/Interception/Interceptor.php:138] #33 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153] #34 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:23] #35 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:116] #36 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:23] #37 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:264] #38 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:30] </pre>
Solved! Go to Solution.
Please replace your constructor with below change and execute compilation again.
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Data\FormFactory $formFactory,
\Magento\Framework\View\Asset\Repository $assetRepo,
array $data = []
) {
$this->_assetRepo = $assetRepo;
parent::__construct($context, $registry, $formFactory, $data);
}
I have done changes in parent::__construct() parameters orders. Please replace with above and execute compile.
Hope it helps!
Thanks
It is actually work but i still need to run some command to reset my page:
php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento setup:static-content:deploy -f sudo chmod -R 777 var pub generated php bin/magento c:f
Hi @annq3sivn4281 ,
Can you please provide content that you have added in constructor for this file?
/var/www/html/rakuten_magento/app/code/Rakuten/MemberCard/Block/Adminhtml/Card/Import.php on line 23
Hope it helps!
Thanks
Here, i do not know what happen with $registry ?
<?php namespace Rakuten\MemberCard\Block\Adminhtml\Card; class Import extends \Magento\Backend\Block\Widget\Form\Generic implements \Magento\Backend\Block\Widget\Tab\TabInterface { protected $_assetRepo; /** * Import constructor. * @param \Magento\Backend\Block\Template\Context $context * @param array $data */ public function __construct( \Magento\Backend\Block\Template\Context $context, \Magento\Framework\Registry $registry, \Magento\Framework\Data\FormFactory $formFactory, \Magento\Framework\View\Asset\Repository $assetRepo, array $data = [] ) { $this->_assetRepo = $assetRepo; parent::__construct($context, $data, $registry, $formFactory); } /** * Prepare form * * @return $this */ protected function _prepareForm() { $path = $this->_assetRepo->getUrl("vendor_module::importsample/sample.csv"); $form = $this->_formFactory->create(); $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $storemanager = $objectManager->create('Magento\Store\Model\StoreManagerInterface'); $fieldset = $form->addFieldset( 'base_fieldset', [ 'legend' => __('Import Pincodes'), 'class' => 'fieldset-wide' ] ); $importdata_script = $fieldset->addField( 'file', 'file', [ 'name' => 'file', 'label' => __('Upload File'), 'title' => __('Upload File'), 'required' => true, ] ); $importdata_script->setAfterElementHtml(" <span id='sample-file-span' ><a id='sample-file-link' href='" . $path . "' >Download Sample File</a></span> "); $this->setForm($form); return parent::_prepareForm(); } /** * Prepare label for tab * * @return string */ public function getTabLabel() { return __('Import Pincodes'); } /** * Prepare title for tab * * @return string */ public function getTabTitle() { return $this->getTabLabel(); } /** * Can show tab in tabs * * @return boolean */ public function canShowTab() { return true; } /** * Tab is hidden * * @return boolean */ public function isHidden() { return false; } }
Hi @annq3sivn4281 ,
As I can see you haven't used $registry anywhere except constructor.
So, try one thing, remove $registry from constructor and compile again.
Remove below lines:
\Magento\Framework\Registry $registry,
and
Remove $registry from parent::__construct()
OR
If you need $registry in your current block then define variable and remove it from parent::__construct() and use it like $this->registry = $registry; after $this->_assetRepo = $assetRepo; line.
Hope it helps!
Thanks
i did like you said but it still show the same error. It still show that $registry in my import file
Please replace your constructor with below change and execute compilation again.
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\Data\FormFactory $formFactory,
\Magento\Framework\View\Asset\Repository $assetRepo,
array $data = []
) {
$this->_assetRepo = $assetRepo;
parent::__construct($context, $registry, $formFactory, $data);
}
I have done changes in parent::__construct() parameters orders. Please replace with above and execute compile.
Hope it helps!
Thanks
It is actually work but i still need to run some command to reset my page:
php bin/magento setup:upgrade php bin/magento setup:di:compile php bin/magento setup:static-content:deploy -f sudo chmod -R 777 var pub generated php bin/magento c:f