在addtocart.phtml中的Magento 2.2.6中,如何获得“数量增量”

时间:2018-10-30 08:38:13

标签: magento magento2

在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() ?>

Screenshot Qty Increments

2 个答案:

答案 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(); ?>
...

希望这对将来的读者很有用。如果适合您,请留下赞言。