Create the module & define dependencies

In this lesson, we will be building a module for Magento. We will start with a vanilla install of Magento and proceed with creating the necessary directories and files to build our module.

Setting Up the Module Directory

First, navigate to the app/code directory. Create a new directory for our vendor name, which will be Macademy, and our module name, which will be Minerva. The module name is inspired by the Roman goddess of wisdom, as the module represents a database of frequently asked questions and answers.

Creating the registration.php File

The next step is to create a registration.php file. In all PHP files, we will be declaring strict types, which is a commonly known best practice and recommended by Magento.

Next, import the ComponentRegistrar class, and call its’ register function. This function accepts three arguments: a type, component name, and path. For the type, call ComponentRegistrar again, and then call its module constant. Since we are creating a module, the name will be our vendor name Macademy, followed by an underscore, and then the module name, which is Minerva. This string will be used anytime Magento references the module in code.

Since our module files will all be in this directory, we will call the __DIR__ constant in PHP, which is a reference to the current directory. This will register the module in Magento on the PHP level.

Creating the etc/module.xml File

To register the module with Magento on the configuration layer, we need another file named etc/module.xml. Within this file, we will define a module root XML node, which is config. It will have the no namespace schema location set to Magento framework’s module.xsd file. These xsd files just validate the structure of the XML files to make sure we are creating it in a format that Magento expects to see.

Within config will come a module node, and then the name of our module which will be Macademy_Minerva. In this case, we are going to open it so we can define some dependencies for our module, and we do that with the sequence node. This sequence node expects any number of module nodes.

Every admin grid in Magento depends on both the Magento_Backend module and Magento_UI. So we will declare those upfront because we know they’re going to be dependent upon. This ensures that the Backend and UI modules are loaded before our module, which makes our module load last and have the highest level of precedence.

Enabling the Module

Finally, open up the terminal and enable this module by running the following command:

bin/magento module enable Macademy_Minerva

Assuming you are running either a docker-magento setup or have cache clean enabled to automatically flush these caches. If not, you will also have to purge the cache. After running the command, confirm the module is enabled by running:

bin/magento module:status

We can confirm that there are no disabled modules here, and that our module appears under the enabled module list.

Complete and Continue  
Extra lesson content locked
Enroll to access all lessons, source code & comments.
Enroll now to Unlock