Create View: Controller, Block, Layout and Template In Magento2
The Magento2 view is created by combining different files. View is a combination of Controller, Block, Template and Layout files.
In this blog, we’ll discuss how to create a view in Magento2. We’ll cover the following points:-
Create Controller
Create Layout
Create Block
Create Template
Step 1 :- Create Controller
Firstly, we’ll create a Controller, the role of the controller in rendering view is to create an object of pagefactory class that is used to initialize the layout.
Create Index.php inside Vendor/Module/Controller/Index
<?php
namespace Vendor\Module\Controller\Index;
class Index extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory)
{
$this->_pageFactory = $pageFactory;
return parent::__construct($context);
}
public function execute()
{
return $this->_pageFactory->create();
}
}
Here, pageFactory is used to load the layout.
Step 2 :- Create Layout
Create a layout file inside Vendor/Module/view/frontend/layout, naming format for the layout file is routeid_controllername_actionname.xml. In my case it is blogs_index_index.xml.
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<referenceContainer name="content">
<block class="Vendor\Module\Block\Data" name="blog_data" template=”Vendor_Module::display.phtml" />
</referenceContainer>
</page>
Layout file defines the structure of the view and connects and block and template file together.
Here,
referenceContainer is used when you want to put your container in an already existing container then we have to create a referenceContainer for that. (We’ll discuss referenceContainer and referenceBlock in the next blog).
Block is used to connect both PHP class file and template file together. Define the block class file path in the class attribute.
Name is used as a reference of the block class.
Template is used to define the template file of the view, format is :- Vendor_Module::filename.phtml.
We’ve added a block and template file inside a reference container.
Step 3 :- Create Block
Block files are created inside the Vendor/Module/Block folder. Block is a PHP class file which contains all the logic's which we have to use in our phtml file. Every block file extends Magento\Framework\View\Element\Template class.
Create Data.php inside Vendor/Module/Block
<?php
namespace Vendor\Module\Block;
class Data extends \Magento\Framework\View\Element\Template
{
public function __construct(\Magento\Framework\View\Element\Template\Context $context)
{
parent::__construct($context);
}
public function displaydata()
{
return __('View in Magento2');
}
}
We can call block inside a phtml file using $block.
Step 4 :- Create Template
Create display.phtml inside Vendor/Module/view/frontend/template. Phtml file contains both php and html code.
We can call the block file inside phtml file using $block->functionname();
<?php
/**
* @var \Vendor\Module\Block\Data $block
*/
echo $block->displaydata();
Firstly. We’ve to create a controller to load the layout, then it loads the layout file in which we’ve defined the block and template file. We can call the block functions in a phtml file and this is how we can create a custom view in Magento2.
Comments
Post a Comment