Wie bekomme ich Daten einer Entität?

Hallo alle zusammen,

Ich versuche gerade über einen Subscriber bestimmt Daten einer Entität zu bekommen.

Mein Code sieht wie folgt so aus:

class ProductLoaded implements EventSubscriberInterface
{
    /**
     * @var EntityRepositoryInterface
     */
    private $productRepository;
    public function __construct(EntityRepositoryInterface $productRepository)
    {
        $this->productRepository = $productRepository;
    }
    
    /**
     * @inheritDoc
     */
    public static function getSubscribedEvents(): array
    {
        return [
            ProductPageCriteriaEvent::class=> 'ProduktDetails',
        ];
    }
    public function ProduktDetails(ProductPageCriteriaEvent $event)
    {
        $id = $event->getProductId();
        echo($id);
        $criteria = new Criteria();
        $criteria->addFilter(new EqualsFilter('product.id', $id));
        $entities = $this->productRepository->search(
            $criteria,
            $event->getContext()->getContext()
        );
        var_dump($entities);
    }
}

 

Ich bekomme zwar die Entität, weiß aber nicht wie ich die Preise in eine Variable speichern kann.

Kann mir bitte einer helfen? :slight_smile:

 

Mit freundlichen Grüßen

Federico

zu deinem subscripten event:
du willst dir im storefront die detailseite holen oder?
dann wäre das event ProductPageLoadedEvent besser.

erstmal musst du dir das einzelne produkt holen:

$product = $entities->get( product_id );

dann dump dir am besten mal die class methods. weiß leider gerade nicht aus dem ff wie methode für das abholen der preise ist

var_dump( get_class_methods( $product ) );

nehmen wir mal an die methode ist getPrices(), holst du dir die daten und weißt es dem event zu. 
 

// holt den preis
$prices = $product->getPrices();

// gibt ihn ans event
$event->getPage()->assign( 'my_prices', $prices )

/edit: mir fällt grad auf dass wenn du dir das event der produktdetailseite holst du nicht extra ne product repository abfragen musst. du bekommst die daten ja schon.

2 „Gefällt mir“