``` <?php namespace Vendor\Namespace\Setup; use Magento\Cms\Model\Block as CmsBlock; use Magento\Cms\Model\BlockRepository; use Magento\Cms\Model\BlockFactory; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\Setup\ModuleContextInterface; use Magento\Framework\Setup\ModuleDataSetupInterface; use Magento\Framework\Setup\UpgradeDataInterface; /** * Class UpgradeData */ class UpgradeData implements UpgradeDataInterface { /** * @var BlockFactory */ private $blockFactory; /** * @var BlockRepository */ private $blockRepository; /** * UpgradeData constructor. * * @param BlockFactory $blockFactory * @param BlockRepository $blockRepository */ public function __construct( BlockFactory $blockFactory, BlockRepository $blockRepository ) { $this->blockFactory = $blockFactory; $this->blockRepository = $blockRepository; } /** * Upgrades data for a module * * @param ModuleDataSetupInterface $setup * @param ModuleContextInterface $context * * @return void * @throws \Exception * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { if (version_compare($context->getVersion(), '1.0.1', '<')) { $cmsBlocksData = [ [ 'title' => 'Title', 'identifier' => 'cms_block_identifier', 'content' => '<p>Some content</p>', 'is_active' => CmsBlock::STATUS_ENABLED, 'stores' => 0 ], [ 'title' => 'Title 2', 'identifier' => 'cms_block_identifier_second', 'content' => '<p>Some content</p>', 'is_active' => CmsBlock::STATUS_ENABLED, 'stores' => 0 ] ]; foreach ($cmsBlocksData as $cmsBlockData) { /** @var CmsBlock $block */ try { $this->blockRepository->getById($cmsBlockData['identifier']); } catch (NoSuchEntityException $e) { $block = $this->blockFactory->create(); $block->setData($cmsBlockData); $this->blockRepository->save($block); } } } } }