Php IsSalable()和isAvailable()之间有什么区别?
我正在我的Magento主题的(个人)产品页面上显示库存可用性,关于这一点我还不完全了解 我看到模板中使用了两种方法来检查产品是否可供销售: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在之后是可销售的) 在前端,我
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,当他们似乎在做同样的事情时。我目前正在建立一个主题,所以我想把它做好。对,评论没有回答你的问题,但我认为可能有某种关联,我对我的答案的编辑有点不协调