¿Por qué está deshabilitado el estado 2 en lugar de 0?

19

Una pregunta para cualquier desarrollador de magento:

¿Por qué un producto habilitado tiene el estado 1, mientras que un producto deshabilitado tiene el estado 2? Por lo general, "habilitado" o "activo" o lo que sea que obtenga el estado 1, mientras que el inverso es 0. ¿Hay alguna razón por la cual magento usa 2 aquí?

Benubird
fuente
A menudo me pregunto esto, aunque no tengo idea. Presumiblemente no es un valor booleano. ¿Hay otro estado que no sea habilitado o deshabilitado?
JamesAllwood
2
@JamesAllwood Nope. Mage_Catalog_Model_Product_Status define STATUS_ENABLED y STATUS_DISABLED, nada más.
Benubird
Hermosa pregunta, sin querer ayudó a responder algo que estaba tratando de resolver!
SR_Magento

Respuestas:

20

En primer lugar, los valores ni siquiera deberían ser importantes.
Use en su código estas constantes Mage_Catalog_Model_Product_Status::STATUS_ENABLEDy Mage_Catalog_Model_Product_Status::STATUS_DISABLED.
La razón que encontré hasta ahora es que cuando quieres crear un producto, en la mayoría de los casos quieres que esté habilitado. Si el valor para el estado deshabilitado era 0, entonces esto se seleccionará debido a la forma en que se pasan los valores actuales al formulario $form->setValues($data).
Al crear un producto $dataestá vacío y, en el caso de menús desplegables, 0 = vacío.
[EDITAR]
Acabo de recordar algo más.
Inicialmente, el estado tenía una tabla separada y había 3 valores posibles.

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

Y podrías agregar más. comprobar app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php.
Este enfoque se introdujo mysql4-upgrade-0.7.4-0.7.5.phpy supongo que por compatibilidad mantuvieron los identificadores de los estados.

DROP TABLE IF EXISTS {$this->getTable('catalog_product_status')};
Marius
fuente
"En primer lugar, los valores ni siquiera deberían ser importantes". ¡Son cuando estás creando un archivo de importación CSV!
jscar
No, ellos no son. Puede tomar los valores a ciegas y usarlos en la importación.
Marius
OK, creo que entiendo tu punto original ahora. Permítanme reformular: es importante saber cuáles son los valores al realizar una importación :) El hecho de que sean 1 y 2 es contraintuitivo. Esperaría 0 y 1
jscar
-1

el valor del estado del producto proviene del campo de selección "estado" de la administración del producto en admin. "habilitado" y "deshabilitado" son las opciones del campo de selección con los valores 1 y 2. Estos no son valores booleanos.

Manish Shrestha
fuente