Reading list Switch to dark mode

    How to get composer.json data in block in magento 2

    Updated 11 January 2023

    In this blog, we will try to learn about getting the composer.json data saved in Magento 2 module.

    In Magento 2 we define the composer.json file for the particular module, which will define the module versioning and dependencies of the module, and so on.

    Now, to get saved information from the composer.json file we will see the file in the file path \Magento\Framework\Component\ComponentRegistrarInterface
    Here we will find the method named as
    create($path) which will help us to get the data in a user-defined block file.

    Now, we will see how we can achieve this.

    class ComposerVersion extends \Magento\Config\Block\System\Config\Form\Field {
    
    
        public function __construct(
            \Magento\Framework\View\Asset\Repository $assetRepo,
            \Magento\Backend\Block\Template\Context $context,
            \Magento\Framework\App\DeploymentConfig $deploymentConfig,
            \Magento\Framework\Component\ComponentRegistrarInterface $componentRegistrar,
            \Magento\Framework\Filesystem\Directory\ReadFactory $readFactory,
            array $data = []
        ) {
            $this->_assetRepo = $assetRepo;
            $this->deploymentConfig = $deploymentConfig;
            $this->componentRegistrar = $componentRegistrar;
            $this->readFactory = $readFactory;
            parent::__construct($context, $data);
        }
    
        public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element) {
            $moduleName = 'Vendor_Module';
            $path = $this->componentRegistrar->getPath(
                \Magento\Framework\Component\ComponentRegistrar::MODULE,
                $moduleName
            );
            $directoryRead = $this->readFactory->create($path);
            $composerJsonData = $directoryRead->readFile('composer.json');
            $data = json_decode($composerJsonData);
            return $data;
        }
    
    }

    Now you can use this block as per your requirement.

    Start your headless eCommerce
    now.
    Find out More
    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home