为什么禁用状态从2改为0?


19

任何magento开发人员的问题:

为什么启用的产品的状态为1,而禁用的产品的状态为2?通常情况下,“启用”或“活动”或任何状态为1,反之则为0。请问magento在这里使用2的原因吗?


我本人经常对此感到疑惑,尽管一无所知。大概不是布尔值。除了启用或禁用之外,还有其他状态吗?
JamesAllwood

2
@JamesAllwood没有。Mage_Catalog_Model_Product_Status定义STATUS_ENABLED和STATUS_DISABLED,仅此而已。
Benubird13年

美丽的问题,无意中帮助了我试图找出的答案!
SR_Magento 2014年

Answers:


20

首先,这些值甚至都不重要。
在您的代码中使用这些常量Mage_Catalog_Model_Product_Status::STATUS_ENABLEDMage_Catalog_Model_Product_Status::STATUS_DISABLED
我到目前为止发现的原因是,当您要创建产品时,大多数情况下都希望启用它。如果禁用状态的值是0,则将选择此值,因为当前值通过传递到表单的方式$form->setValues($data)
创建产品时$data为空,如果是下拉列表,则为0 =空。
[编辑]
我只是想起了别的东西。
最初,状态有一个单独的表,并且有3个可能的值。

insert  into {$this->getTable('catalog_product_status')}(`status_id`,`status_code`) values (1,'Enabled'),(2,'Disabled'),(3,'Out-of-stock');

您可以添加更多。检查app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php
放弃了这种方法mysql4-upgrade-0.7.4-0.7.5.php,我想为了保持兼容性,他们保留了状态ID。

DROP TABLE IF EXISTS {$this->getTable('catalog_product_status')};

“首先,这些价值甚至都不重要。” 它们是在您创建csv导入文件时!
jscar

不,他们不是。您可以盲目地使用这些值并在导入中使用它们。
马里斯(Marius)

好的,我想我现在明白你的意思了。我再说一遍-导入时知道值是很重要的:)它们是1和2的事实是违反直觉的。预期为0和1
jscar

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.