Pregunta

Una pregunta para cualquier desarrollador de magento:

¿Por qué un producto habilitado tiene el estado 1, mientras que un producto discapacitado tiene un estado de 2? Por lo general, "habilitado" o "activo" o lo que sea que obtenga el estado 1, mientras que el contrario es 0. ¿Existe una razón por la cual Magento usa 2 aquí en su lugar?

¿Fue útil?

Solución

En primer lugar, los valores ni siquiera deberían ser importantes.
Use en su código estas constantes Mage_Catalog_Model_Product_Status::STATUS_ENABLED y Mage_Catalog_Model_Product_Status::STATUS_DISABLED.
La razón por la que encontré hasta ahora es que cuando desea crear un producto, en la mayoría de los casos desea que esté habilitado. Si el valor para el estado discapacitado fue 0, entonces esto se seleccionará porque la forma en que los valores actuales se pasan al formulario a través de $form->setValues($data).
Al crear un producto $data está vacío y, en el caso de 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. controlar app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php.
Este enfoque fue dejado caer en mysql4-upgrade-0.7.4-0.7.5.php Y supongo que para la compatibilidad mantuvieron las ID de los estados.

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

Otros consejos

El valor de estado del producto proviene del campo Seleccionar "Estado" de la Gestión del Producto en Admin. El "habilitado" y "deshabilitado" son las opciones del campo Seleccionar con los valores 1 y 2. Estos no son valores booleanos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top