Por que o status 2 está desativado em vez de 0?

19

Uma pergunta para qualquer desenvolvedor magento:

Por que um produto ativado possui o status 1, enquanto um produto desativado possui o status 2? Normalmente, "ativado" ou "ativo" ou o que quer que seja o status 1, enquanto o inverso é 0. Existe uma razão pela qual o magento usa 2 aqui?

Benubird
fonte
Muitas vezes me perguntei isso, mas não faço ideia. Presumivelmente, não é um valor booleano. Existe outro estado que não seja ativado ou desativado?
JamesAllwood
2
@JamesAllwood Nope. Mage_Catalog_Model_Product_Status define STATUS_ENABLED e STATUS_DISABLED, nada mais.
Benubird
Bela pergunta, inadvertidamente, ajudou a responder a algo que eu estava tentando descobrir!
SR_Magento 29/07

Respostas:

20

Antes de tudo, os valores nem deveriam ser importantes.
Use no seu código essas constantes Mage_Catalog_Model_Product_Status::STATUS_ENABLEDe Mage_Catalog_Model_Product_Status::STATUS_DISABLED.
A razão que encontrei até agora é que, quando você deseja criar um produto, na maioria dos casos, deseja que ele seja ativado. Se o valor do status desativado foi 0, ele será selecionado porque a maneira pela qual os valores atuais são transmitidos ao formulário $form->setValues($data).
Ao criar um produto, ele $dataestá vazio e, no caso de listas suspensas, 0 = vazio.
[EDIT]
Acabei de me lembrar de outra coisa.
Inicialmente, o status tinha uma tabela separada e havia 3 valores possíveis.

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

E você pode adicionar mais. cheque app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php.
Essa abordagem foi adotada mysql4-upgrade-0.7.4-0.7.5.phpe acho que, por compatibilidade, eles mantinham os IDs dos status.

DROP TABLE IF EXISTS {$this->getTable('catalog_product_status')};
Marius
fonte
"Antes de tudo, os valores nem deveriam ser importantes." Eles são quando você está criando um arquivo de importação csv!
jscar
Não, eles não são. Você pode apenas pegar cegamente os valores e usá-los na importação.
Marius
OK, acho que entendo seu ponto original agora. Deixe-me reformular - é importante saber quais são os valores ao fazer uma importação :) O fato de serem 1 e 2 é contra-intuitivo. Gostaria de 0 e 1
jscar 26/06
-1

o valor do status do produto vem do campo de seleção "status" do gerenciamento de produtos em admin. "ativado" e "desativado" são as opções do campo de seleção com os valores 1 e 2. estes não são valores booleanos.

Manish Shrestha
fonte