Вопрос

В Magento 1 я могу внедрить шаблон с помощью кода, как показано ниже.

$layout = Mage::getSingleton('core/layout');
$block = $layout->createBlock('module/module_block_identifier');
$block->setTemplate('module/test.phtml');

Как в Magento 2 внедрить шаблон, как указано выше?

Это было полезно?

Решение

Вы можете использовать:

$block = $this->getLayout()->createBlock(
            'Magento\Backend\Block\Template'
        )->setTemplate('module/test.phtml');

Сорт \Magento\Framework\View\Result\Layout как Mage::getSingleton('core/layout')

Другие советы

Если вы находитесь внутри класса блока, вы можете просто использовать:

$layout = $this->getLayout(); 
....
.

Если вы находитесь в контроллере, вам нужно ввести в конструкторе, а также интерфейс \Magento\Framework\View\LayoutFactory и использовать это:

protected $layoutFactory;
public function __construct(
    ...
    \Magento\Framework\View\LayoutFactory $layoutFactory,
    ....
) {
    ...
    $this->layoutFactory = $layoutFactory;
    ...
}
.

А позже вы можете использовать это:

$layout = $this->layoutFactory->create(); 
$block = $layout->createBlock(....)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top