Tại list.phtml
, tôi đang cố gắng lấy đối tượng sản phẩm hoặc id sản phẩm cho mẫu con, nó đến từ mô-đun khác. Làm cách nào tôi có thể nhận id sản phẩm tại tệp phtml đó?
Trong magento 1.x có thể thông qua kỹ thuật sau. Khi sử dụng nó vào magento 2.x là lỗi ném
Uncaught Error: Gọi tới hàm thành viên setData ()
bố trí mô-đun tùy chỉnh của tôi
<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>
danh sách mô-đun tùy chỉnh tập tin.
<?php foreach ($_productCollection as $_product){ ?>
<?php
$block->getChildBlock("offer_list")->setData("product", $_product);
echo $block->getChildHtml('offer_list')
?>
<?php } ?>
mã lớp là
<?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;
}
}
tập tin con phtml
<div class="other-offers">
<?php echo $block->getProduct()->getId(); ?>
</div>