在Magento 2.2.6中,文件中的
"/app/design/frontend/THEME/Magento_Catalog/templates/product/view/addtocart.phtml"
如何获取在屏幕截图中设置的“数量增量”?
我已经做了很多测试,但是它们无法正常工作,例如:
<?php echo $product->getStockItem()->getData('qty_increments') ?>
<?php echo $block->getProductQtyIncrements() ?>
<?php echo $stockItem->getQtyIncrements() ?>
<?php echo $product->getStockItem()->getQtyIncrements() ?>
答案 0 :(得分:0)
要获取库存状态,请按以下步骤操作:
在addtocart BLock中,在构造函数中添加以下内容:
\Magento\CatalogInventory\Model\Stock\StockItemRepository $stockItemRepository,
然后将其启动为
$this->_stockItemRepository = $stockItemRepository;
然后您可以创建一个类似的方法:
public function getStockItem($productId)
{
return $this->_stockItemRepository->get($productId);
}
并从模板文件中调用它以获取产品的所有库存相关信息。
我建议改写阻止文件,然后执行上面建议的更改。
让我知道我是否能够提供帮助。
答案 1 :(得分:0)
这是使用View模型方法的Magento 2.2及更高版本的解决方案。 文档:https://devdocs.magento.com/guides/v2.3/extension-dev-guide/view-models.html
app / code / Vendor / ModuleName / etc / di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
<type name="Vendor\ModuleName\ViewModel\Qty" />
</config>
app / code / Vendor / ModuleName / etc / module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_ModuleName" setup_version="1.0.0" />
</config>
应用/代码/供应商/模块名称/视图/前端/布局/catalog_product_view.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="product.info.addtocart.additional" template="Vendor_ModuleName::product/view/addtocart.phtml">
<arguments>
<argument name="view_model" xsi:type="object">Vendor\ModuleName\ViewModel\Qty</argument>
</arguments>
</referenceBlock>
<referenceBlock name="product.info.addtocart" template="Vendor_ModuleName::product/view/addtocart.phtml">
<arguments>
<argument name="view_model" xsi:type="object">Vendor\ModuleName\ViewModel\Qty</argument>
</arguments>
</referenceBlock>
</body>
</page>
app / code / Vendor / ModuleName / ViewModel / Qty.php
无需创建自定义函数,因为它足以扩展“ Qtyincrements”类。
<?php
namespace Vendor\ModuleName\ViewModel;
use Magento\Framework\View\Element\Block\ArgumentInterface;
use Magento\CatalogInventory\Block\Qtyincrements;
class Qty extends Qtyincrements implements ArgumentInterface {}
应用/代码/供应商/模块名称/视图/前端/模板/产品/视图/addtocart.phtml
现在,您可以像这样通过viewModel访问getProductQtyIncrements():
...
<?php $viewModel = $block->getViewModel(); ?>
<?php $productQtyIncrements = $viewModel->getProductQtyIncrements(); ?>
...
希望这对将来的读者很有用。如果适合您,请留下赞言。