Shopping cart

Magento 2 Module load order position

Magento 2 Module Sequence - load order position is the topic to point you the right load order in your component’s module.xml file. If you want to understand the dependencies among the components using your component’s composer.json, it is obviously that you really need to know the correct load order in your component’s module.xml file using the <sequence> tag.

What is the <sequence> tag?

The responsibility of the <sequence> tag is notifying you that what components have to loaded before the current component is loaded. The <sequence> is especially supported when you implement the loading of different types of file such as configuration files, view files (including CSS, LESS, and template files), or setup classes.

In addition, if you need to load the regular classes (non-setup classes), there is no influence of the <sequence> tag on that implementation.

Note:
The classes are called as setup classes when they are included by the component that creates or updates database schema or data.

To run your project fluently, you should use composer.json and <sequence> in module.xml file if ensuring that your needed component’s logic rely upon another component.

Module Sequence Cases

Here we will refer to Component A and Component B. Suppose that Component A introduces gadgetlayout.xml, which allows updating block gadgetBlock from component B. At that time, you need to clarify that in component B’s <sequence> entry in module.xml file. So now we will start with component A which needs a configuration file from component B.

Case 1: The files, which come with the same type, will be loaded from various components while the sequence information in each component’s module.xml file are considered as well.

Case 2: Suppose that you need to load a list of the layout files with the name default.xml and component A designates component B in <sequence>. The following is the load order of the files:

component X /view/frontend/layout/default.xml — Either we don’t care about when component X loads or perhaps component B requires it to be loaded before it.

component B /view/frontend/layout/default.xml

component A /view/frontend/layout/default.xml —Loads after component B because component B is listed in component A’s tag.

component Z /view/frontend/layout/default.xml — Either we don’t care about the sequence for component Z or perhaps component Z requires component A files to be loaded before it.

Maybe you need to know, in <sequence> tag, you can mention any valid component without any limitation and besides, you also should be sure that that component is declared in the require section of the composer.json file.