Latest update: You can check and download my new sample extension at here : Thienphucvx_sample
It includes:
– Work well with latest magento 2 version.
– Setup and install sample data for simple blog database
– Sending a request and create new blog post.
– It also includes cache tags so you need to clear cache to see new post after creating.
Bonus :
Magento 2 debug extension. It will be useful for debug purpose
In this tutorial, we create new module : Inbusiness_Helloworld
So let’s create a module that simply echos “Hello World” in the content.
1/ First we will start with a module.xml file to declare with magento2 about new module :
app\code\Inbusiness\Helloworld\etc\module.xml
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"> <module name="Inbusiness_Helloworld" schema_version="0.0.0.1" active="true"> <sequence> <module name="Magento_Core"/> <module name="Magento_Store"/> </sequence> <depends> <module name="Magento_Store"/> </depends> </module> </config>
2/ Create app\code\Inbusiness\Helloworld\etc\frontend\page_types.xml
<?xml version="1.0"?> <page_types xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../Core/etc/page_types.xsd"> <type id="helloworld_index_index" label="Hello World Demo Site"/> </page_types>
3/ Create app\code\Inbusiness\Helloworld\etc\frontend\routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd"> <router id="standard"> <route id="helloworld" frontName="helloworld"> <module name="Inbusiness_Helloworld" /> </route> </router> </config>
4/ Create app\code\Inbusiness\Helloworld\Controller\Index.php
<?php namespace Inbusiness\Helloworld\Controller; use Magento\Framework\App\Action\NotFoundException; use Magento\Framework\App\RequestInterface; class Index extends \Magento\Framework\App\Action\Action { /** * @var \Magento\Framework\Mail\Template\TransportBuilder */ protected $_transportBuilder; /** * @var \Magento\Framework\Translate\Inline\StateInterface */ protected $inlineTranslation; /** * @var \Magento\Framework\App\Config\ScopeConfigInterface */ protected $scopeConfig; /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $storeManager; /** * @param \Magento\Framework\App\Action\Context $context * @param \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder * @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Store\Model\StoreManagerInterface $storeManager */ public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder, \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Store\Model\StoreManagerInterface $storeManager ) { parent::__construct($context); $this->_transportBuilder = $transportBuilder; $this->inlineTranslation = $inlineTranslation; $this->scopeConfig = $scopeConfig; $this->storeManager = $storeManager; } }
5/ Create app\code\Inbusiness\Helloworld\Controller\Index\Index.php
<?php namespace Inbusiness\Helloworld\Controller\Index; class Index extends \Inbusiness\Helloworld\Controller\Index { /** * Show Hello World page * * @return void */ public function execute() { $this->_view->loadLayout(); $this->_view->renderLayout(); } }
6/ Create app\code\Inbusiness\Helloworld\view\frontend\layout\helloworld_index_index.xml
<?xml version="1.0"?> <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../Core/etc/layout_single.xsd"> <update handle="page_one_column"/> <referenceBlock name="head"> <action method="setTitle"> <argument translate="true" name="title" xsi:type="string">Hello World Demo Site</argument> </action> </referenceBlock> <referenceContainer name="content"> <block class="Magento\Framework\View\Element\Template" name="helloworld" template="Inbusiness_Helloworld::helloworld.phtml"></block> </referenceContainer> </layout>
7/ Create app\code\Inbusiness\Helloworld\view\frontend\templates\helloworld.phtml
<?php $message = "Hello World"; echo $message; ?>
When you enter : your_site/helloworld, “Hello World” will be displayed.
Happy coding !
COMMENTS