Dlaczego status 2 jest wyłączony zamiast 0?

19

Pytanie dla wszystkich twórców magento:

Dlaczego produkt włączony ma status 1, a produkt wyłączony ma status 2? Zwykle „włączony” lub „aktywny” lub cokolwiek dostaje status 1, podczas gdy konwersja wynosi 0. Czy istnieje powód, dla którego magento używa tutaj 2?

Benubird
źródło
Często zastanawiałem się nad tym, ale nie mam pojęcia. Prawdopodobnie nie jest to wartość boolowska. Czy istnieje inny stan niż włączony lub wyłączony?
JamesAllwood,
2
@JamesAllwood Nope. Mage_Catalog_Model_Product_Status definiuje STATUS_ENABLED i STATUS_DISABLED, nic więcej.
Benubird,
Piękne pytanie, nieumyślnie pomogło mi odpowiedzieć na coś, co próbowałem wymyślić!
SR_Magento

Odpowiedzi:

20

Przede wszystkim wartości nie powinny nawet być ważne.
Użyj w swoim kodzie tych stałych Mage_Catalog_Model_Product_Status::STATUS_ENABLEDi Mage_Catalog_Model_Product_Status::STATUS_DISABLED.
Dotychczas znalazłem powód, dla którego jeśli chcesz utworzyć produkt, w większości przypadków chcesz go włączyć. Jeśli wartość dla statusu wyłączona była 0, to zostanie ona wybrana, ponieważ sposób, w jaki bieżące wartości są przekazywane do formularza $form->setValues($data).
Podczas tworzenia produktu $datajest pusty, aw przypadku list rozwijanych 0 = pusty.
[EDYCJA]
Właśnie przypomniałem sobie coś innego.
Początkowo status miał osobną tabelę i były 3 możliwe wartości.

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

I możesz dodać więcej. sprawdzić app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php.
Podejście to zostało odrzucone mysql4-upgrade-0.7.4-0.7.5.phpi wydaje mi się, że dla kompatybilności zachowali identyfikatory statusów.

DROP TABLE IF EXISTS {$this->getTable('catalog_product_status')};
Marius
źródło
„Przede wszystkim wartości nie powinny być nawet ważne”. Są, gdy tworzysz plik importu csv!
jscar
Nie oni nie są. Możesz po prostu ślepo wziąć wartości i użyć ich w imporcie.
Marius
OK, myślę, że teraz rozumiem twój pierwotny punkt. Pozwólcie, że przeformułuję - ważne jest, aby wiedzieć, jakie są wartości podczas importowania :) Fakt, że są to 1 i 2, jest sprzeczny z intuicją. Spodziewałbym się 0 i 1
jscar
-1

wartość statusu produktu pochodzi z pola wyboru „status” z zarządzania produktem w admin. „włączone” i „wyłączone” są opcjami pola wyboru o wartościach 1 i 2. nie są to wartości logiczne.

Manish Shrestha
źródło