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>

Вывод:

Output

Author: Rafael Corrêa Gomes, 2017-05-27

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>

Очистить кэш.

 1
Author: Sohel Rana, 2017-05-28 07:05:47

В моем случае у меня было несколько вызовов функций в файле шаблона. Как одна из функций, которая выдавала какую-то ошибку. Это приводило к тому, что файл шаблона не отображался. Таким образом, ничего после этого вызова функции отображаться не будет.

 0
Author: hardik thakkar, 2019-03-08 06:03:07