Magento 2: Почему блок инициализирован, но шаблон не визуализирован?
У меня есть страница, на которую я хочу добавить контент. Моя проблема в том, что мой блок инициализирован и вызывается setTemplate
, но мой шаблон никогда не отображался. Я попытался добавить имя модуля в макет (Vendor_Test::
), но это не имело никакого значения. Когда я редактирую свой макет, я меняю заголовок и очищаю кэш, чтобы видеть, что применяется новый заголовок.
Вот мои файлы:
Контроллер:
<?php
namespace Vendor\Test\Controller\Exec;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;
use Magento\Framework\App\ResponseInterface;
class Bank extends \Magento\Framework\App\Action\Action
{
protected $resultPageFactory;
public function __construct(
Context $context,
PageFactory $resultPageFactory
)
{
$this->resultPageFactory = $resultPageFactory;
parent::__construct($context);
}
public function execute()
{
$page = $this->resultPageFactory->create();
return $page;
}
}
Мой макет:
<?xml version="1.0"?>
<page layout="3column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<title>Bank Page Title</title>
</head>
<body>
<block class="Vendor\Test\Block\Date" name="vendor.test.date" template="date.phtml" >
<arguments>
<argument name="something" xsi:type="string">Value</argument>
</arguments>
</block>
</body>
</page>
Мой блок:
<?php
namespace Vendor\Test\Block;
class Date extends \Magento\Framework\View\Element\Template
{
/**
* @param \Magento\Framework\View\Element\Template\Context $context
* @param array $data
*/
public function __construct(\Magento\Framework\View\Element\Template\Context $context, array $data = [])
{
parent::__construct($context, $data);
}
public function getDate()
{
return date('m/d/Y H:i:s');
}
}
Мой шаблон:
<div class="Something" >
<?php echo $block->getDate();?>
</div>
Вывод:
2 answers
Измените файл макета, выполнив следующий код
<?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">
<head>
<title>Bank Page Title</title>
</head>
<body>
<referenceContainer name="content">
<block class="Vendor\Test\Block\Date" name="vendor.test.date" template="Vendor_Test::date.phtml">
<arguments>
<argument name="something" xsi:type="string">Value</argument>
</arguments>
</block>
</referenceContainer>
</body>
</page>
Очистить кэш.
В моем случае у меня было несколько вызовов функций в файле шаблона. Как одна из функций, которая выдавала какую-то ошибку. Это приводило к тому, что файл шаблона не отображался. Таким образом, ничего после этого вызова функции отображаться не будет.