Почему отключен статус 2 вместо 0?

19

Вопрос для любого разработчика magento:

Почему включенный продукт имеет статус 1, а отключенный продукт - 2? Обычно «включено» или «активно» или что-то еще получает статус 1, в то время как обратное значение равно 0. Есть ли причина, по которой magento использует 2 вместо этого?

Benubird
источник
Часто задавался этим вопросом сам, хотя понятия не имею. Предположительно, это не логическое значение. Есть ли другое состояние, кроме включенного или отключенного?
Джеймс Эллвуд
2
@JamesAllwood Нет. Mage_Catalog_Model_Product_Status определяет STATUS_ENABLED и STATUS_DISABLED, больше ничего.
Benubird
Красивый вопрос, непреднамеренно помогший ответить на то, что я пытался выяснить!
SR_Magento

Ответы:

20

Прежде всего, ценности не должны быть важными.
Используйте в своем коде эти константы Mage_Catalog_Model_Product_Status::STATUS_ENABLEDи Mage_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и я думаю, что для совместимости они сохранили идентификаторы статусов.

DROP TABLE IF EXISTS {$this->getTable('catalog_product_status')};
Мариус
источник
«Прежде всего, ценности не должны быть важны». Они, когда вы создаете файл импорта CSV!
Jscar
Нет, они не. Вы можете просто слепо взять значения и использовать их при импорте.
Мариус
Хорошо, я думаю, что теперь понимаю вашу первоначальную точку зрения. Позвольте мне перефразировать - важно знать, каковы значения при импорте :) Тот факт, что они 1 и 2, противоречит интуиции. Ожидается 0 & 1
Jscar
-1

значение статуса продукта поступает из поля выбора «status» в управлении продуктом в admin. «enabled» и «disabled» - это опции поля выбора со значениями 1 и 2. это не булевы значения.

Маниш Шреста
источник