Mengapa dinonaktifkan status 2 bukannya 0?

19

Sebuah pertanyaan untuk para pengembang magento:

Mengapa produk yang diaktifkan memiliki status 1, sedangkan produk yang dinonaktifkan memiliki status 2? Biasanya, "diaktifkan" atau "aktif" atau apa pun yang mendapat status 1, sedangkan yang sebaliknya adalah 0. Apakah ada alasan mengapa Magento menggunakan 2 di sini?

Benubird
sumber
Seringkali saya bertanya-tanya sendiri, tidak tahu. Mungkin bukan nilai boolean. Apakah ada negara lain selain diaktifkan atau dinonaktifkan?
JamesAllwood
2
@ James Allwood Tidak. Mage_Catalog_Model_Product_Status mendefinisikan STATUS_ENABLED dan STATUS_DISABLED, tidak ada yang lain.
Benubird
Pertanyaan yang indah, secara tidak sengaja membantu menjawab sesuatu yang saya coba cari tahu!
SR_Magento

Jawaban:

20

Pertama-tama, nilai-nilai itu seharusnya tidak penting.
Gunakan dalam kode Anda konstanta ini Mage_Catalog_Model_Product_Status::STATUS_ENABLEDdan Mage_Catalog_Model_Product_Status::STATUS_DISABLED.
Alasan yang saya temukan sejauh ini adalah ketika Anda ingin membuat suatu produk, dalam kebanyakan kasus Anda ingin itu diaktifkan. Jika nilai untuk status dinonaktifkan adalah 0, maka ini akan dipilih karena cara nilai saat ini diteruskan ke formulir melalui $form->setValues($data).
Saat membuat produk $datakosong dan, dalam hal dropdown, 0 = kosong.
[EDIT]
Saya baru ingat sesuatu yang lain.
Awalnya status memiliki tabel terpisah dan ada 3 nilai yang mungkin.

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

Dan Anda bisa menambahkan lebih banyak. periksa app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php.
Pendekatan ini dijatuhkan mysql4-upgrade-0.7.4-0.7.5.phpdan saya kira bahwa untuk kompatibilitas mereka menjaga id status.

DROP TABLE IF EXISTS {$this->getTable('catalog_product_status')};
Marius
sumber
"Pertama-tama nilai-nilai itu seharusnya tidak penting." Itu adalah saat Anda membuat file impor csv!
jscar
Tidak, mereka bukan. Anda bisa membabi buta mengambil nilai dan menggunakannya dalam impor.
Marius
OK, saya pikir saya mengerti poin awal Anda sekarang. Biarkan saya ulangi - penting untuk mengetahui nilainya saat melakukan impor :) Fakta bahwa mereka 1 & 2 adalah kontra-intuitif. Diharapkan 0 & 1
jscar
-1

nilai status produk berasal dari bidang pilih "status" dari manajemen produk di admin. "diaktifkan" dan "dinonaktifkan" adalah opsi dari bidang pilih dengan nilai 1 dan 2. ini bukan nilai boolean.

Manish Shrestha
sumber