0

I tried the following solution:-

Magento 2 Load - Block (CMS Static Block in Magento 1 terms)

But getting some issue, you can visit here to see:-

http://nimb.ws/oURqfV

Here is my controller code:-

<?php

    namespace Test\Clientform\Controller\Show;


    class Index extends \Magento\Framework\App\Action\Action
    {
        protected $_filterProvider;
        protected $_storeManager;
        protected $_blockFactory;

        public function __construct(
            \Magento\Framework\View\Element\Context $context,
            \Magento\Cms\Model\Template\FilterProvider $filterProvider,
            \Magento\Store\Model\StoreManagerInterface $storeManager,
            \Magento\Cms\Model\BlockFactory $blockFactory,
            array $data = []
        )
        {
            parent::__construct($context, $data);
            $this->_filterProvider = $filterProvider;
            $this->_storeManager = $storeManager;
            $this->_blockFactory = $blockFactory;
        }

        public function execute()
        {

            $resultPage = $this->_resultPageFactory->create();
            return $resultPage;
        }

        protected function content()
        {
            $blockId = 'YOurBlock_Id';
            $html = '';
            if ($blockId) {
                $storeId = $this->_storeManager->getStore()->getId();
                /** @var \Magento\Cms\Model\Block $block */
                $block = $this->_blockFactory->create();
                $block->setStoreId($storeId)->load($blockId);

                    $html = $this->_filterProvider->getBlockFilter()->setStoreId($storeId)->filter($block->getContent());
            }
            return   $html;
        }

    }

    ?>

1 Answer 1

3

As you see in your exception log, issue is you should use App\Action\Context instead of View\Element\Context Class

<?php

namespace Test\Clientform\Controller\Show;


class Index extends \Magento\Framework\App\Action\Action
{
    protected $_filterProvider;
    protected $_storeManager;
    protected $_blockFactory;

    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Cms\Model\Template\FilterProvider $filterProvider,
        \Magento\Store\Model\StoreManagerInterface $storeManager,
        \Magento\Cms\Model\BlockFactory $blockFactory,
        array $data = []
    )
    {
        parent::__construct($context, $data);
        $this->_filterProvider = $filterProvider;
        $this->_storeManager = $storeManager;
        $this->_blockFactory = $blockFactory;
    }

    public function execute()
    {

        $resultPage = $this->_resultPageFactory->create();
        return $resultPage;
    }

    protected function content()
    {
        $blockId = 'YOurBlock_Id';
        $html = '';
        if ($blockId) {
            $storeId = $this->_storeManager->getStore()->getId();
            /** @var \Magento\Cms\Model\Block $block */
            $block = $this->_blockFactory->create();
            $block->setStoreId($storeId)->load($blockId);

                $html = $this->_filterProvider->getBlockFilter()->setStoreId($storeId)->filter($block->getContent());
        }
        return   $html;
    }

}

?>

Try this hope it will help.

1
  • @Naveed, can we get the HTML of static block and store into some php file? Jan 30, 2019 at 4:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.