Bei list.phtml
versuche ich, ein Produktobjekt oder eine Produkt-ID für eine untergeordnete Vorlage abzurufen, die von einem anderen Modul stammt. Wie kann ich die Produkt-ID in dieser HTML-Datei erhalten?
In Magento 1.x war dies über die folgende Technik möglich. Wenn es in Magento 2.x verwendet wird, wird ein Fehler ausgegeben
Nicht erfasster Fehler: Aufruf einer Mitgliedsfunktion setData ()
mein benutzerdefiniertes Modullayout
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="category.products.list">
<action method="setTemplate">
<argument name="template" xsi:type="string">PR_Catalog::product/list.phtml</argument>
</action>
<block class="PR\Catalog\Block\Product\Offers" name="category.products.offers" as="offer_list" template="PR_Catalog::product/offers.phtml" />
</referenceBlock>
</body>
</page>
benutzerdefinierte Modul list.phtml Datei
<?php foreach ($_productCollection as $_product){ ?>
<?php
$block->getChildBlock("offer_list")->setData("product", $_product);
echo $block->getChildHtml('offer_list')
?>
<?php } ?>
Blockklassencode ist
<?php
namespace PR\Catalog\Block\Product;
class Offers extends \Magento\Framework\View\Element\Template
{
private $product;
public function setProduct($product)
{
$this->product = $product;
}
public function getProduct()
{
var_dump($this->product);die;
return $this->product;
}
}
untergeordnete Block-HTML-Datei
<div class="other-offers">
<?php echo $block->getProduct()->getId(); ?>
</div>