Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php IsSalable()和isAvailable()之间有什么区别?_Php_Magento_Product_Stock - Fatal编程技术网

Php IsSalable()和isAvailable()之间有什么区别?

Php IsSalable()和isAvailable()之间有什么区别?,php,magento,product,stock,Php,Magento,Product,Stock,我正在我的Magento主题的(个人)产品页面上显示库存可用性,关于这一点我还不完全了解 我看到模板中使用了两种方法来检查产品是否可供销售: Mage\u目录\型号\产品::isAvailable() Mage_目录_型号_产品::可销售() 我自己的发现: 我看到isSalable()(依次被isSalable()调用)调用isAvailable(),但也发送两个事件(catalog\u product\u在之前是可销售的,catalog\u product\u在之后是可销售的) 在前端,我

我正在我的Magento主题的(个人)产品页面上显示库存可用性,关于这一点我还不完全了解

我看到模板中使用了两种方法来检查产品是否可供销售:

Mage\u目录\型号\产品::isAvailable()
Mage_目录_型号_产品::可销售()
我自己的发现:
我看到
isSalable()
(依次被
isSalable()
调用)调用
isAvailable()
,但也发送两个事件(
catalog\u product\u在
之前是可销售的,
catalog\u product\u在
之后是可销售的)

在前端,我注意到在Magento的基本模板中,
isAvailable()
用于决定是否将产品显示为“库存中”或“缺货”<代码>isSaleable()
用于决定是否显示“添加到购物车”按钮

在后端,我注意到当库存数量变为零并且不允许缺货时,产品的库存可用性变为“缺货”。 当库存数量变为零且允许缺货时,产品的库存可用性保持不变

问题:
“库存可用性”和“库存数量”这两个属性显然是相互关联的,并且上述PHP方法也是如此。我想知道:

  • PHP方法
    isAvailable()
    isSaleable()
    是,为什么我会使用一个而不是另一个

  • 我似乎还不知道它们与这些属性和Magento行为的关系

多谢各位

编辑:
我尝试了产品的库存数量(-1,0,1)、库存可用性(进出)和缺货订单(开/关)的所有相关组合,结果如下:

St.Qu BckOrd St.Av isSalable() isSaleable() isAvailable() -1 0 0 0 0 0 -1 0 1 N/A N/A N/A -1 1 0 0 0 0 -1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 N/A N/A N/A 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 Magento中的stock availability(库存可用性)开关控制所有PHP方法的返回值,但当缺货订单关闭且库存数量降至1以下时,库存可用性将自动重置为“缺货”(因此是
N/A
行)。

我看到了语义上的差异。如果一个没有库存的商品被设置为允许缺货,那么它仍然可以销售

据我所知,它看起来像是
isAvailable
检查一个产品类型实例,看看如果该产品类型确实可用,它是否可以出售

所以,大胆猜测一下你什么时候可以选择其中一个:

如果您正在检查单个产品,以查看所述产品是否已准备好销售,则应使用
isSalable()
,因为它将调用
isAvailable()

要检查某个产品(其类型您现在还不知道)是否可以销售,我想跳过检查该产品类型的步骤,您可以对该产品调用
isAvailable()

isAvailable()
检查产品类型是否可销售

isSalable()
检查产品是否畅销


isSalable()
isSalable()
的别名isAvailable()用于决定是否将产品显示为库存或缺货,而isSalable()用于决定是否显示“添加到购物车”按钮。

就我而言,
isSalable()
表示您正在检查可供销售的最顶级产品。而
isAvailable()
表示您正在从可用列表中检查产品。

isAvailable()
看起来好像在检查它是否达到0


isAvailable()
看起来它正在计数

如果我没有弄错的话,这些检查的差异与为下订单预订产品有关。当客户向订单中添加产品时,这些产品仍将在您的库存中,因此它们仍然可用。尽管如此,它们还是不畅销,因为它们已经被另一位客户订购了

所以语义上的区别是:

  • 销售方式:库存中,尚未被其他客户订购
  • 可用是指:库存中,但由另一客户订购,因此可用,但不可销售
您可以通过下产品订单来验证这一点。和你之前做的一样。这将导致可用产品数量和可销售产品数量之间的差异

编辑: 更多信息请点击此处:


我理解有库存和有能力出售之间的语义区别,但我仍然不知道isSalable()/isSalable()和isAvailable()之间的语义区别是什么。在我能想到的每一种情况下,他们做的事情都是一样的,为什么要用一个来代替另一个呢?我说“我能想到”是因为我想知道是否有我没有想到的情况可能会区分这些方法,因为现在我觉得其中一种方法是无用的,我想这是一个快速判断。在你编辑的问题中,您已写入当缺货订单关闭且库存数量降至1以下时,库存可用性将自动重置为“缺货”还有一个“库存\u自动更改\u”标志,我使用该标志显示(技术上)未盘点且明确库存的项目,缺货订单关闭,数量=0这是有用的信息,谢谢。我不想显得忘恩负义,但我仍然不知道什么时候应该使用isSaleable,什么时候应该使用isAvailable,当他们似乎在做同样的事情时。我目前正在建立一个主题,所以我想把它做好。对,评论没有回答你的问题,但我认为可能有某种关联,我对我的答案的编辑有点不协调