Type
magento2-module
Bare-bones demo extension
magento2-module
None
None
None
None
None
None
Thank you for trying the Magento reference extension! We created it to get you started with module development as quickly as possible. Right now it simply displays a list of Magento modules but you can use it to:
You can install the reference module in any of the following ways:
By copying the code to your <magento install dir>/app/code/<VendorName>/<ModuleName>
directory.
This method requires some manual tasks but it easy.
Using composer update
.
Any Magento module requires a particular directory structure under <your Magento install dir>/app/code
. The structure starts with:
<VendorName>\<ModuleName>
The reference module requires the following structure:
M2demo/M2Extension
To add the module to your Magento installation:
root
user or the web server user).Enter the following commands in the order shown:
cd/app/code mkdir -p M2demo/M2Extension
Go to the reference module GitHub.
.zip
file you downloaded to your Magento server's <magento install dir>/app/code/m2demo/module-m2-extension
directory.Enter the following commands in the order shown:
unzip m2extension-master.zip mv m2extension-master/* . rm -rf m2extension-master
Open <your Magento install dir>/app/config.php
in a text editor.
Add the following anywhere under: 'modules' => array (
:
'M2Demo_M2Extension' => 1
Save your changes and exit the text editor.
To install any module using composer update
, you must modify the Magento 2 composer.json
. The changes required for the reference module are simple, and after that it installs automatically.
To use Composer to install the module:
Log in to your Magento server as a user with root
privileges.
Note: On Ubuntu, you might need to use the sudo su
command.
Change to your Magento installation directory.
composer.json
in a text editor.Add the following line in the "require":
section:
"m2demo/module-m2-extension": "*"
Note: Make sure the preceding line ends with a comma character.
In the autoload": { "psr-4"
section, add the following line:
"M2Demo\\": "app/code/M2Demo/"
Note: Make sure the preceding line ends with a comma character.
Save your changes and exit the text editor.
From your Magento installation directory, enter the following commands in the order shown:
composer dump-autoload composer update
Open <your Magento install dir>/app/config.php
in a text editor.
Add the following anywhere under: 'modules' => array (`:
'M2Demo_M2Extension'
=> 1,
Log in to your Magento server as a user with root
privileges.
Enter the following commands in the order shown to clear the Magento cache:
cd/var rm -rf cache page_cache
If you're currently logged in to the Magento Admin, log out.
Click Stores > Configuration > ADVANCED > Advanced > Disable Modules Output.
If m2demo_module-m2-extension displays in alphabetical order, you successfully installed the reference module!
To see the reference module at work, enter the following URL in your browser's address or location field:
http[s]://<your web server IP or host name>/<your Magento base dir>/demo_extension/index/sayhello
For example,
http://www.example.com/magento/demo_extension/index/sayhello
A list of Magento modules displays. That's it! You're done!
To autoload classes in the module more quickly, the root composer.json must be updated. Place the following line in the autoload->psr-4 section: "M2Demo\": "app/code/M2Demo/"
For reference, see Composer's autoloading documentation.
To integrate the module with composer, a composer.json file must be placed in the root of the extension.
A router takes the given request and determines which controller and action should handle it. Routing options are configured in "etc/
The router element's id attribute determines which router to use for this module.
The route element's id attribute provides a unique name for the router and module pair. Used for merging config information of multiple routers.
The module element's frontname attribute is what will show up in the url corresponding to the module.
During runtime, one of several areas is always active, depending on the type of user and code being executed. This module is meant for the frontend area. The directory structure is: Extension/etc/area/routes.xml
The module.xml file defines the name of the module. If any of the module's dependencies need to be loaded in a particular sequence, this file can also store that sequence.
The controller class is in app/code/M2Demo/M2Extension/Controller/Index/SayHello.php.
The controller is accessed at the URL
The controller class extends \Magento\Framework\App\Action\Action. It implements an execute() method, which contains the controller's business logic. In this case, it prints out a short message and a list of active modules. If it renders output, the output must go into the _response object.
The _response object stores the information that is sent back to the client. It is a protected member of the class defined by a parent.
The parent's dispatch() method calls execute(), and then returns the _response back to the system, which delivers it to the client.