cancel
Showing results for 
Search instead for 
Did you mean: 

Prince Pincode Checker extension Compilation problem

SOLVED
   Did you know you can see the translated content as per your choice?

Translation is in progress. Please check again after few minutes.

Prince Pincode Checker extension Compilation problem

Hello,

I have installed Prince Pincode Checker from  https://github.com/mageprince/Magento2-PincodeChecker.

After installation, when I used command php bin/magento setup:di:compile It gives following error.

        Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker\Save
                Extra parameters passed to parent construct: $coreRegistry. File
: C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker/
Controller/Adminhtml/Pincodechecker/Save.php
        Prince\PincodeChecker\Helper\Data
                Incorrect dependency in class Prince\PincodeChecker\Helper\Data
in C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker
/Helper/Data.php
\Magento\Framework\App\Config\ScopeConfigInterface already exists in context obj
ect
Total Errors Count: 2
Errors during compilation:
        Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker\Save
                Extra parameters passed to parent construct: $coreRegistry. File
: C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker/
Controller/Adminhtml/Pincodechecker/Save.php
        Prince\PincodeChecker\Helper\Data
                Incorrect dependency in class Prince\PincodeChecker\Helper\Data
in C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker
/Helper/Data.php
\Magento\Framework\App\Config\ScopeConfigInterface already exists in context obj
ect
Total Errors Count: 2
Errors during compilation:
        Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker\Save
                Extra parameters passed to parent construct: $coreRegistry. File
: C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker/
Controller/Adminhtml/Pincodechecker/Save.php
        Prince\PincodeChecker\Helper\Data
                Incorrect dependency in class Prince\PincodeChecker\Helper\Data
in C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker
/Helper/Data.php
\Magento\Framework\App\Config\ScopeConfigInterface already exists in context obj
ect
Total Errors Count: 2
Errors during compilation:
        Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker\Save
                Extra parameters passed to parent construct: $coreRegistry. File
: C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker/
Controller/Adminhtml/Pincodechecker/Save.php
        Prince\PincodeChecker\Helper\Data
                Incorrect dependency in class Prince\PincodeChecker\Helper\Data
in C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker
/Helper/Data.php
\Magento\Framework\App\Config\ScopeConfigInterface already exists in context obj
ect
Total Errors Count: 2
Errors during compilation:
        Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker\Save
                Extra parameters passed to parent construct: $coreRegistry. File
: C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker/
Controller/Adminhtml/Pincodechecker/Save.php
        Prince\PincodeChecker\Helper\Data
                Incorrect dependency in class Prince\PincodeChecker\Helper\Data
in C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker
/Helper/Data.php
\Magento\Framework\App\Config\ScopeConfigInterface already exists in context obj
ect
Total Errors Count: 2
Errors during compilation:
        Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker\Save
                Extra parameters passed to parent construct: $coreRegistry. File
: C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker/
Controller/Adminhtml/Pincodechecker/Save.php
        Prince\PincodeChecker\Helper\Data
                Incorrect dependency in class Prince\PincodeChecker\Helper\Data
in C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/app/code/Prince/PincodeChecker
/Helper/Data.php
\Magento\Framework\App\Config\ScopeConfigInterface already exists in context obj
ect
Total Errors Count: 2

Interception cache generation... 7/7 [============================] 100% 3 mins
136.0 MiB
Generated code and dependency injection configuration successfully.

Magento Version: 2.1.9

Any help ?

Thanks.

1 ACCEPTED SOLUTION

Accepted Solutions

Re: Prince Pincode Checker extension Compilation problem

Seems like there are un-necessary dependency added in Below two files

1) Save.php and 2) Data.php

 

In Save.php file - coreRegistery added in construct function which is actually not needed.

 

Below is the Re-factor code for Save.php , Copy this code and paste in Save.php

 

File location - Prince/PincodeChecker/Controller/Adminhtml/Pincodechecker/Save.php

 

<?php

namespace Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker;

use Magento\Framework\Exception\LocalizedException;

class Save extends \Magento\Backend\App\Action
{

    protected $dataPersistor;

    /**
     * @param \Magento\Backend\App\Action\Context $context
     * @param \Magento\Framework\App\Request\DataPersistorInterface $dataPersistor
     */
    public function __construct(
        \Magento\Backend\App\Action\Context $context,
        \Magento\Framework\App\Request\DataPersistorInterface $dataPersistor
    ) {
        $this->dataPersistor = $dataPersistor;
        parent::__construct($context);
    }

    /**
     * Save action
     *
     * @return \Magento\Framework\Controller\ResultInterface
     */
    public function execute()
    {
        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
        $resultRedirect = $this->resultRedirectFactory->create();
        $data = $this->getRequest()->getPostValue();
        if ($data) {
            $id = $this->getRequest()->getParam('pincode_id');
        
            $model = $this->_objectManager->create('Prince\PincodeChecker\Model\Pincodechecker')->load($id);
            if (!$model->getId() && $id) {
                $this->messageManager->addError(__('This Pincode no longer exists.'));
                return $resultRedirect->setPath('*/*/');
            }
        
            $model->setData($data);
        
            try {
                $model->save();
                $this->messageManager->addSuccess(__('You saved the Pincode.'));
                $this->dataPersistor->clear('prince_pincodechecker_pincodechecker');
        
                if ($this->getRequest()->getParam('back')) {
                    return $resultRedirect->setPath('*/*/edit', ['pincode_id' => $model->getId()]);
                }
                return $resultRedirect->setPath('*/*/');
            } catch (LocalizedException $e) {
                $this->messageManager->addError($e->getMessage());
            } catch (\Exception $e) {
                $this->messageManager->addException($e, __('Something went wrong while saving the Pincode.'));
            }
        
            $this->dataPersistor->set('prince_pincodechecker_pincodechecker', $data);
            return $resultRedirect->setPath('*/*/edit', ['pincode_id' => $this->getRequest()->getParam('pincode_id')]);
        }
        return $resultRedirect->setPath('*/*/');
    }
}

 

2) In Data.php file -  ScopConfig is there in construct function which is not needed.

 

Below is the Re-factor code for Data.php , Copy this code and paste in Data.php.

 

File location - Prince/PincodeChecker/Helper/Data.php

 

<?php

namespace Prince\PincodeChecker\Helper;

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    /**
     * @var \Prince\PincodeChecker\Model\ResourceModel\Pincodechecker\CollectionFactory
     */
    protected $pincodeCollection;

    /**
     * @var \Magento\Catalog\Model\Product
     */
    protected $product;

    /**
     * @var \Magento\Framework\Controller\ResultFactory
     */
    protected $resultFactory;

    /**
     * @var \Magento\Framework\App\Config\ScopeConfigInterface
     */
    protected $scopeConfig;

    /**
     * Constructor
     *
     * @param \Magento\Framework\App\Helper\Context $context
     * @param \Magento\Catalog\Model\Product $product
     * @param \Prince\PincodeChecker\Model\ResourceModel\Pincodechecker\CollectionFactory $pincodeCollection
     * @param \Magento\Framework\Controller\ResultFactory $resultFactory
     */
    public function __construct(
        \Magento\Framework\App\Helper\Context $context,
        \Magento\Catalog\Model\Product $product,
        \Prince\PincodeChecker\Model\ResourceModel\Pincodechecker\CollectionFactory $pincodeCollection,
        \Magento\Framework\Controller\ResultFactory $resultFactory
    )
    {
        $this->pincodeCollection = $pincodeCollection;
        $this->product = $product;
        $this->resultFactory = $resultFactory;
        parent::__construct($context);
    }

    /**
     * Get collection of pincode
     */
    public function getCollection()
    {
        return $this->pincodeCollection->create();
    }

    /**
     * Get pincode status
     */
    public function getPincodeStatus($pincode)
    {
        $collection = $this->getCollection();
        $collection->addFieldToFilter('pincode', array('eq' => $pincode));
        
        if($collection->getData()){
            return true;
        }else{
            return false;
        }

    }

    /**
     * Get pincode status by product
     */
    public function getProductPincodeStatus($id, $pincode)
    {
        $product = $this->product->load($id);
        $pincodes = $product->getData('pincode');
        $pincodeArr = explode(',', $pincodes);

        if(in_array($pincode, $pincodeArr))
        {
            return true;
        }else{
            return false;
        }
            
    }

    /**
     * Get pincode status message
     */
    public function getMessage($status, $pincode)
    {
        if($status){
            $message = "<h3>".$this->getSuccessMessage()."</h3>";
        }else{
            $message = "<h3 style='color:red'>".$this->getFailMessage()."</h3>";
        }

        return $message;
    }

    /**
     * Get redirect url
     */
    public function getRedirect()
    {
        $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
        $resultRedirect->setUrl($this->_redirect->getRefererUrl());
        return $resultRedirect;
    }

    /**
     * Check module enable
     */
    public function getIsEnable()
    {
        return $this->scopeConfig->getValue('pincode/general/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    /**
     * Get check on addtocart config value
     */
    public function getIsCheckonAddtoCart()
    {
        return $this->scopeConfig->getValue('pincode/general/checkaddtocart', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    /**
     * Get success message config value
     */
    public function getSuccessMessage()
    {
        return $this->scopeConfig->getValue('pincode/general/successmessage', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    /**
     * Get fail message config value
     */
    public function getFailMessage()
    {
        return $this->scopeConfig->getValue('pincode/general/failmessage', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }
}

 

 

 

if issue solved,Click Kudos & Accept as Solution

View solution in original post

6 REPLIES 6

Re: Prince Pincode Checker extension Compilation problem

Seems like there are un-necessary dependency added in Below two files

1) Save.php and 2) Data.php

 

In Save.php file - coreRegistery added in construct function which is actually not needed.

 

Below is the Re-factor code for Save.php , Copy this code and paste in Save.php

 

File location - Prince/PincodeChecker/Controller/Adminhtml/Pincodechecker/Save.php

 

<?php

namespace Prince\PincodeChecker\Controller\Adminhtml\Pincodechecker;

use Magento\Framework\Exception\LocalizedException;

class Save extends \Magento\Backend\App\Action
{

    protected $dataPersistor;

    /**
     * @param \Magento\Backend\App\Action\Context $context
     * @param \Magento\Framework\App\Request\DataPersistorInterface $dataPersistor
     */
    public function __construct(
        \Magento\Backend\App\Action\Context $context,
        \Magento\Framework\App\Request\DataPersistorInterface $dataPersistor
    ) {
        $this->dataPersistor = $dataPersistor;
        parent::__construct($context);
    }

    /**
     * Save action
     *
     * @return \Magento\Framework\Controller\ResultInterface
     */
    public function execute()
    {
        /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
        $resultRedirect = $this->resultRedirectFactory->create();
        $data = $this->getRequest()->getPostValue();
        if ($data) {
            $id = $this->getRequest()->getParam('pincode_id');
        
            $model = $this->_objectManager->create('Prince\PincodeChecker\Model\Pincodechecker')->load($id);
            if (!$model->getId() && $id) {
                $this->messageManager->addError(__('This Pincode no longer exists.'));
                return $resultRedirect->setPath('*/*/');
            }
        
            $model->setData($data);
        
            try {
                $model->save();
                $this->messageManager->addSuccess(__('You saved the Pincode.'));
                $this->dataPersistor->clear('prince_pincodechecker_pincodechecker');
        
                if ($this->getRequest()->getParam('back')) {
                    return $resultRedirect->setPath('*/*/edit', ['pincode_id' => $model->getId()]);
                }
                return $resultRedirect->setPath('*/*/');
            } catch (LocalizedException $e) {
                $this->messageManager->addError($e->getMessage());
            } catch (\Exception $e) {
                $this->messageManager->addException($e, __('Something went wrong while saving the Pincode.'));
            }
        
            $this->dataPersistor->set('prince_pincodechecker_pincodechecker', $data);
            return $resultRedirect->setPath('*/*/edit', ['pincode_id' => $this->getRequest()->getParam('pincode_id')]);
        }
        return $resultRedirect->setPath('*/*/');
    }
}

 

2) In Data.php file -  ScopConfig is there in construct function which is not needed.

 

Below is the Re-factor code for Data.php , Copy this code and paste in Data.php.

 

File location - Prince/PincodeChecker/Helper/Data.php

 

<?php

namespace Prince\PincodeChecker\Helper;

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    /**
     * @var \Prince\PincodeChecker\Model\ResourceModel\Pincodechecker\CollectionFactory
     */
    protected $pincodeCollection;

    /**
     * @var \Magento\Catalog\Model\Product
     */
    protected $product;

    /**
     * @var \Magento\Framework\Controller\ResultFactory
     */
    protected $resultFactory;

    /**
     * @var \Magento\Framework\App\Config\ScopeConfigInterface
     */
    protected $scopeConfig;

    /**
     * Constructor
     *
     * @param \Magento\Framework\App\Helper\Context $context
     * @param \Magento\Catalog\Model\Product $product
     * @param \Prince\PincodeChecker\Model\ResourceModel\Pincodechecker\CollectionFactory $pincodeCollection
     * @param \Magento\Framework\Controller\ResultFactory $resultFactory
     */
    public function __construct(
        \Magento\Framework\App\Helper\Context $context,
        \Magento\Catalog\Model\Product $product,
        \Prince\PincodeChecker\Model\ResourceModel\Pincodechecker\CollectionFactory $pincodeCollection,
        \Magento\Framework\Controller\ResultFactory $resultFactory
    )
    {
        $this->pincodeCollection = $pincodeCollection;
        $this->product = $product;
        $this->resultFactory = $resultFactory;
        parent::__construct($context);
    }

    /**
     * Get collection of pincode
     */
    public function getCollection()
    {
        return $this->pincodeCollection->create();
    }

    /**
     * Get pincode status
     */
    public function getPincodeStatus($pincode)
    {
        $collection = $this->getCollection();
        $collection->addFieldToFilter('pincode', array('eq' => $pincode));
        
        if($collection->getData()){
            return true;
        }else{
            return false;
        }

    }

    /**
     * Get pincode status by product
     */
    public function getProductPincodeStatus($id, $pincode)
    {
        $product = $this->product->load($id);
        $pincodes = $product->getData('pincode');
        $pincodeArr = explode(',', $pincodes);

        if(in_array($pincode, $pincodeArr))
        {
            return true;
        }else{
            return false;
        }
            
    }

    /**
     * Get pincode status message
     */
    public function getMessage($status, $pincode)
    {
        if($status){
            $message = "<h3>".$this->getSuccessMessage()."</h3>";
        }else{
            $message = "<h3 style='color:red'>".$this->getFailMessage()."</h3>";
        }

        return $message;
    }

    /**
     * Get redirect url
     */
    public function getRedirect()
    {
        $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
        $resultRedirect->setUrl($this->_redirect->getRefererUrl());
        return $resultRedirect;
    }

    /**
     * Check module enable
     */
    public function getIsEnable()
    {
        return $this->scopeConfig->getValue('pincode/general/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    /**
     * Get check on addtocart config value
     */
    public function getIsCheckonAddtoCart()
    {
        return $this->scopeConfig->getValue('pincode/general/checkaddtocart', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    /**
     * Get success message config value
     */
    public function getSuccessMessage()
    {
        return $this->scopeConfig->getValue('pincode/general/successmessage', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }

    /**
     * Get fail message config value
     */
    public function getFailMessage()
    {
        return $this->scopeConfig->getValue('pincode/general/failmessage', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
    }
}

 

 

 

if issue solved,Click Kudos & Accept as Solution

Re: Prince Pincode Checker extension Compilation problem

Thanks for reply.

I have replaced the code in files by your code, both in Save.php and Data.php

Then I ran following commands again

php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy

php bin/magento setup:di:compile

This gives following error.

C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs>php bin/magento setup:di:compile
The directory "C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/var/generation/Mag
ento/Newsletter/Controller/Adminhtml/Subscriber" cannot be deleted Warning!rmdir
(C:/Bitnami/magento-2.1.9-0/apps/magento/htdocs/var/generation/Magento/Newslette
r/Controller/Adminhtml/Subscriber): Directory not empty#0 C:\Bitnami\magento-2.1
.9-0\apps\magento\htdocs\vendor\magento\framework\Filesystem\Driver\File.php(403
): Magento\Framework\Filesystem\Driver\File->deleteDirectory('C:/Bitnami/mage...
')
#1 C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\vendor\magento\framework\Files
ystem\Driver\File.php(403): Magento\Framework\Filesystem\Driver\File->deleteDire
ctory('C:/Bitnami/mage...')
#2 C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\vendor\magento\framework\Files
ystem\Driver\File.php(403): Magento\Framework\Filesystem\Driver\File->deleteDire
ctory('C:/Bitnami/mage...')
#3 C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\vendor\magento\framework\Files
ystem\Driver\File.php(403): Magento\Framework\Filesystem\Driver\File->deleteDire
ctory('C:/Bitnami/mage...')
#4 C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\vendor\magento\framework\Files
ystem\Driver\File.php(403): Magento\Framework\Filesystem\Driver\File->deleteDire
ctory('C:/Bitnami/mage...')
#5 C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\setup\src\Magento\Setup\Consol
e\CompilerPreparation.php(68): Magento\Framework\Filesystem\Driver\File->deleteD
irectory('C:/Bitnami/mage...')
#6 C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\vendor\magento\framework\Conso
le\Cli.php(74): Magento\Setup\Console\CompilerPreparation->handleCompilerEnviron
ment()
#7 C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\bin\magento(22): Magento\Frame
work\Console\Cli->__construct('Magento CLI')
#8 {main}

PHP Fatal error:  Uncaught Error: Class 'Cli' not found in C:\Bitnami\magento-2.
1.9-0\apps\magento\htdocs\bin\magento:31
Stack trace:
#0 {main}
  thrown in C:\Bitnami\magento-2.1.9-0\apps\magento\htdocs\bin\magento on line 3
1

Thanks

Re: Prince Pincode Checker extension Compilation problem

The error comes from var/generation  directory.

 

You just need to remove your var/generation directory from your root directory.

 

Also remove var/cache and var/page_cache directory from your root directory.

 

you can remove those directories by running below commands.

 

  • rm -rf var/generation
  • rm -rf var/cache
  • rm -rf var/page_cache

 

Then run following commands again

php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy

php bin/magento setup:di:compile

if issue solved,Click Kudos & Accept as Solution

Re: Prince Pincode Checker extension Compilation problem

Fantastic !!

Thanks Manthan.

It is working and ended with no errors. I am very happy, as I needed this extension very much.

You guys are very helpful.

Thanks again.

Re: Prince Pincode Checker extension Compilation problem

@bablupali

 

Glad to know that you have resolved your issue , Happy to help and keep helping !!

 

 

if issue solved,Click Kudos & Accept as Solution

Re: Prince Pincode Checker extension Compilation problem

i am getting this error . I followed all instruction that you have  showed here but when i click on add ton cart i get this error .

 

 

Error: Class 'Prince\PincodeChecker\Helper\ResultFactory' not found in C:\xampp\htdocs\magento2.4\app\code\Prince\PincodeChecker\Helper\Data.php:109 Stack trace: #0