I'm trying to load my .phtml files in the template folder within my observer but I'm getting this error
Invalid template file: 'VENDOR_MYModule::Category/index.phtml' in module: 'VENDOR_MYModule' block's name: 'category_0'
Here's the structure of my files
app
+ code
+ VENDOR
+ MYModule
+ Block
- Category.php
+ Controller
+ Category
- Index.php
+ etc
+ frontend
- routes.xml
+ Observer
- CategoryObserver.php
+ view
+ frontend
+ layout
- header_category_index.xml
+ templates
+ category
- index.phtml
Now the content of my Block/Category.php
is below
<?php
namespace VENDOR\MYModule\Block;
class Category extends \Magento\Framework\View\Element\Template
{
public function __construct(
\Magento\Backend\Block\Template\Context $context,
array $data = []
){
parent::__construct($context, $data);
}
}
The content of my Controller/Category/Index.php
is below
<?php
namespace VENDOR\MYModule\Controller\Category;
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();
}
}
The content of the layout/header_category_index.xml
is below
<?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\MYModule\Block\Category" name="category_items" template="VENDOR_MYModule::category/index.phtml" />
</referenceContainer>
</page>
The content of my .phtml
is just a simple <h1>Hello world</h1>
. Now in my Observer
I'm trying to load this .phtml
file but I can't load it and getting the error. The content of my Observer is below
public function execute(\Magento\Framework\Event\Observer $observer)
{
$layout = $this->_layout->create();
$block = $layout->createBlock('VENDOR\MYModule\Block\Category')->setTemplate('VENDOR_MYModule::Category/index.phtml')->toHtml();
$this->_logger->debug("[DEBUG]::" , [$block]);
}
But I'm getting the error as mentioned above. Any idea on how to load this .phtml file to the observer? I'm planning to write the content of this .phtml file to a .txt file. But I can't proceed since I tried outputting it but I'm still getting an error