getBlockSingletone в magento 2


Как мы называем getBlockSingleton() в magento 2

echo $this->getBlockSingleton('newmodule/newblock');
Author: Amit Bera, 2017-10-26

1 answers

Эта функция также доступна в magento 2, но вы не можете использовать заводской шаблон newmodule/newblock . Просто вам нужно использовать fullClass Name вашего класса блоков.

Если вы пробовали в phtml, то попробуйте

$block->getBlockSingleton({Full\Block\Class\Name\Here}::class);

Если класс блока:

$это->getLayout()->Getblocksingleton({Полный\Блок\Класс\Имя\Здесь}::класс)

Пример:

$this->getLayout()
            ->getBlockSingleton(\Magento\Customer\Block\Form\Register::class)

Звоните куда угодно

Сначала вам нужно сделать инъекцию планировка класс интерфейса и класс содержимого если это not available your class.

`Magento\Framework\View\LayoutInterface` 

`\Magento\Framework\App\Helper\Context`

В _constuct функция

namespace {Vendorname}\{Module}\{RestOfPathOfclass};

class {ClassName} .....
{
    /**
     * Layout
     * @var \Magento\Framework\View\LayoutInterface
     */

     protected $_layout;

     public function __construct(
        .....
        \Magento\Framework\App\Helper\Context $context,
        \Magento\Framework\View\LayoutInterface $layout
        .......
     ) {
         $this->_layout = $layout;
         parent::__construct($context);
     }

    public function getMySingleTon() {

        $block =  $this->_layout->getBlockSingleton({Full\Block\Class\Name\Here}::class);
        $html = '';

        if($block){
            $html = $block->toHtml();      
        }      
        return $html;
     }

}
 0
Author: Amit Bera, 2017-10-27 04:54:35