Creating a Module (2h)
Timeline: 2h
Note before start developing module in magento
-Enable dev mode:
Enable the developer mode: bin/magento deploy:mode:set developer
Rename file : pub/errors/local.xml.sample to local.xml
-Magento has cache, so if you doesn't see the code change on the screen, you can run:
bin/magento cache:clean
to clean the cache
-Some time when code, you need to clear some directory: https://devdocs.magento.com/guides/v2.4/howdoi/php/php_clear-dirs.html
in most case, it is “generated” folder
https://devdocs.magento.com/guides/v2.4/architecture/extensibility.html
Module is a structural element of Magento 2 – the whole system is built upon modules. Typically, the first step in creating a customization is building a module.
To create a module, you need to complete the following high-level steps:
Create the module folder.
Create the
etc/module.xml
file.Create the
registration.php
file.Run the
bin/magento setup:upgrade
script to install the new module.Check that the module is working.
Let’s go through each of these steps in detail.
Create the module folder
Let’s create the folder app/code/Learning and inside this folder place another folder: FirstUnit. If you're using the command line, the code would be:
cd
to the root foldermkdir app/code/Learning
mkdir app/code/Learning/FirstUnit
Using the following command-line code, create the folder app/code/Learning/FirstUnit/etc
:
mkdir app/code/Learning/FirstUnit/etc
Then put the following code into it:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Learning_FirstUnit" >
<sequence>
<module name="Magento_Catalog"/>
</sequence>
</module>
</config>
Note that in the XML file we specified:
Module name:
Learning_FirstUnit
(based on the folders we created)Dependency: Magento_Catalog. We could have multiple dependencies. In this case, we would put
<module name=”..” />
nodes under the sequence node.
Create the registration.php file
Each module must have this file, which tells Magento how to locate the module. Continuing our example, create the file app/code/Learning/FirstUnit/registration.php
. Then put the following content into it:
The registration.php
is a standardized file that follows the same pattern for all modules.
The only thing that varies is the module name, which in our case is Learning_FirstUnit
.
Run the “setup:upgrade” command
Running this command makes your new module active, notifying Magento of its presence.
It should echo a large amount of output, one line of which should be Learning_FirstUnit
. Verify that this line of code is there.
Check that the new module is active¶
So far, we haven't added any useful code to our module – it is still empty (and therefore invisible). In order to verify that it has been recognized, check the file app/etc/config.php
. It has a list of auto-generated modules that are active.
Never change this list manually!
Employing these steps, you can successfully create a new module in Magento 2
Exercise:
Create module with the vendor: Magestore, module name: your name