Dep. Comercial +40 365-882.777 +40 722-241.273 Lun-Vin: 10:00-18:00
View Categories

Cum obțin colecția de produse în Magento 2?

< 1 minut de citit

Iată cum obții o colecție de produse într-un bloc Magento 2.

Bună practică: folosește Dependency Injection (metoda 1). Evită ObjectManager::getInstance() în cod de producție — este un anti-pattern, acceptabil doar pentru testare rapidă.

Metoda recomandată (Dependency Injection)

Injectează CollectionFactory și Visibility în constructorul blocului:

namespace Vendor\Module\Block;

use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;
use Magento\Catalog\Model\ResourceModel\Product\CollectionFactory;
use Magento\Catalog\Model\Product\Visibility;

class ProductList extends Template
{
    private $collectionFactory;
    private $productVisibility;

    public function __construct(
        Context $context,
        CollectionFactory $collectionFactory,
        Visibility $productVisibility,
        array $data = []
    ) {
        $this->collectionFactory = $collectionFactory;
        $this->productVisibility = $productVisibility;
        parent::__construct($context, $data);
    }

    public function getProductCollection()
    {
        $collection = $this->collectionFactory->create();
        $collection->addAttributeToSelect('*')
            ->addWebsiteFilter()
            ->addStoreFilter()
            ->setVisibility($this->productVisibility->getVisibleInSiteIds())
            ->setPageSize(5);
        return $collection;
    }
}

În template (.phtml)

<?php foreach ($block->getProductCollection() as $product): ?>
    <?= $block->escapeHtml($product->getName()) ?><br/>
<?php endforeach; ?>
Actualizat la 26/07/2026