use Magento\Cms\Api\BlockRepositoryInterface;
use Magento\Framework\Api\SearchCriteriaBuilder;
declare(strict_types=1);
namespace Vendor\Modulename\Model\Source\Config;
use Magento\Framework\Data\OptionSourceInterface;
use Magento\Cms\Api\BlockRepositoryInterface;
use Magento\Framework\Api\SearchCriteriaBuilder;
use Magento\Framework\Exception\LocalizedException;
class BlockOptions implements OptionSourceInterface
{
/**
* @var BlockRepositoryInterface
*/
private $blockRepository;
/**
* @var SearchCriteriaBuilder
*/
private $searchCriteriaBuilder;
/**
* @param BlockRepositoryInterface $blockRepository
* @param SearchCriteriaBuilder $searchCriteriaBuilder
*/
public function __construct(
BlockRepositoryInterface $blockRepository,
SearchCriteriaBuilder $searchCriteriaBuilder
)
{
$this->blockRepository = $blockRepository;
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
}
/**
* @return array[]
* @throws LocalizedException
*/
public function toOptionArray(): array
{
$searchCriteria = $this->searchCriteriaBuilder->addFilter('is_active','1' , 'eq')->create();
$cmsBlocks = $this->blockRepository->getList($searchCriteria)->getItems();
$array[] = [
'value' => 0,
'label' => __('No Block')
];
$arrResult = [];
foreach ($cmsBlocks as $block) {
$arrResult[] = ['value' => $block->getIdentifier(), 'label' => $block->getTitle()];
}
return array_merge($array, $arrResult);
}
}