Perché lo stato disabilitato 2 anziché 0?


19

Una domanda per tutti gli sviluppatori di magento:

Perché un prodotto abilitato ha lo stato 1, mentre un prodotto disabilitato ha uno stato 2? Di solito, "abilitato" o "attivo" o qualunque cosa ottenga lo stato 1, mentre il contrario è 0. C'è un motivo per cui magento usa 2 qui invece?


Spesso me lo sono chiesto da solo, non ne ho idea. Presumibilmente non è un valore booleano. Esiste un altro stato diverso da abilitato o disabilitato?
James Allwood,

2
@JamesAllwood Nope. Mage_Catalog_Model_Product_Status definisce STATUS_ENABLED e STATUS_DISABLED, nient'altro.
Benubird,

Bella domanda, inavvertitamente aiutato a rispondere a qualcosa che stavo cercando di capire!
SR_Magento,

Risposte:


20

Innanzitutto i valori non dovrebbero nemmeno essere importanti.
Usa nel tuo codice queste costanti Mage_Catalog_Model_Product_Status::STATUS_ENABLEDe Mage_Catalog_Model_Product_Status::STATUS_DISABLED.
Il motivo che ho scoperto finora è che quando si desidera creare un prodotto, nella maggior parte dei casi si desidera che sia abilitato. Se il valore per lo stato disabilitato era 0, questo verrà selezionato perché il modo in cui i valori correnti vengono passati al modulo $form->setValues($data).
Quando si crea un prodotto $dataè vuoto e, nel caso di menu a discesa, 0 = vuoto.
[EDIT]
Ho appena ricordato qualcos'altro.
Inizialmente lo stato aveva una tabella separata e c'erano 3 possibili valori.

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

E potresti aggiungere altro. controllare app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php.
Questo approccio è stato abbandonato mysql4-upgrade-0.7.4-0.7.5.phpe immagino che per compatibilità abbiano mantenuto gli ID degli stati.

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

"Prima di tutto i valori non dovrebbero nemmeno essere importanti." Sono quando stai creando un file di importazione CSV!
jscar,

No non lo sono. Puoi semplicemente prendere ciecamente i valori e usarli nell'importazione.
Marius

OK, penso di aver capito il tuo punto originale ora. Fammi riformulare: è importante sapere quali sono i valori quando si esegue un'importazione :) Il fatto che siano 1 e 2 è controintuitivo. Mi aspetterei 0 & 1
jscar il

-1

il valore dello stato del prodotto proviene dal campo di selezione "stato" dalla gestione del prodotto in admin. "abilitato" e "disabilitato" sono le opzioni del campo di selezione con i valori 1 e 2. questi non sono valori booleani.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.