Perché è disabilitato lo stato 2 invece di 0?
-
16-10-2019 - |
Domanda
Una domanda per eventuali sviluppatori Magento:
Perché è che un prodotto abilitato ha lo stato 1, mentre un prodotto disabile ha uno stato di 2? Di solito, "enabled" o "attivo" o qualsiasi altra cosa ottiene lo stato 1, mentre il contrario è 0. C'è un motivo per cui Magento utilizza 2 qui invece?
Soluzione
In primo luogo di tutti i valori non dovrebbe nemmeno essere importante.
Uso nel codice queste costanti Mage_Catalog_Model_Product_Status::STATUS_ENABLED
e Mage_Catalog_Model_Product_Status::STATUS_DISABLED
.
La ragione per cui ho trovato finora è che quando si vuole creare un prodotto, nella maggior parte dei casi si desidera che sia abilitato. Se il valore per lo stato disattivato era 0
, allora questo sarà selezionato, perché il modo in cui i valori di corrente vengono passati al modulo attraverso $form->setValues($data)
.
Quando si crea un $data
prodotto è vuota e, nel caso di menu di scorrimento, 0 = vuoto.
[EDIT]
Mi sono appena ricordato qualcos'altro.
Inizialmente lo stato aveva un tavolo separato 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 si potrebbe aggiungere di più. controllare app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php
.
Questo approccio è stato abbandonato nel mysql4-upgrade-0.7.4-0.7.5.php
e credo che per la compatibilità hanno mantenuto gli ID degli stati.
DROP TABLE IF EXISTS {$this->getTable('catalog_product_status')};
Altri suggerimenti
il valore di stato del prodotto deriva dal "stato" campo selezionare dalla gestione del prodotto in admin. il "abilitati" e "disabili" sono le opzioni del campo di selezione con i valori 1 e 2. questi sono valori non booleani.