I am attempting to load a static block from my controller - but am having trouble locating the right syntax for doing this.
What is the proper syntax to load a CMS block by identifier or block id and what factory supports this type of loading?
Magento Stack Exchange is a question and answer site for users of the Magento e-Commerce platform. It only takes a minute to sign up.
Sign up to join this communityOn __construct function,you need inject
\Magento\Cms\Model\Template\FilterProvider
\Magento\Store\Model\StoreManagerInterface
\Magento\Cms\Model\BlockFactory
for getting data.
You can try below as example
....... 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; } 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;
}