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?


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')};

"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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.