---
title: Cum obțin colecția de produse în Magento 2?
description: "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ă…"
url: "https://www.hostx.ro/kb/cum-obtin-colectia-de-categorii-de-produse-in-magento-2/"
updated: "2026-07-26"
category: Programare / Aplicații / Magento
tags:
  - bază de date
  - CMS
  - Magento 2
  - PHP
---

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

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 VendorModuleBlock;

use MagentoFrameworkViewElementTemplate;
use MagentoFrameworkViewElementTemplateContext;
use MagentoCatalogModelResourceModelProductCollectionFactory;
use MagentoCatalogModelProductVisibility;

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; ?>
```
