Tại sao trạng thái bị vô hiệu hóa 2 thay vì 0?


19

Một câu hỏi cho bất kỳ nhà phát triển magento:

Tại sao một sản phẩm được kích hoạt có trạng thái 1, trong khi sản phẩm bị vô hiệu hóa có trạng thái là 2? Thông thường, "đã bật" hoặc "hoạt động" hoặc bất cứ điều gì có trạng thái 1, trong khi converse là 0. Có lý do nào khiến magento sử dụng 2 ở đây không?


Thường tự hỏi điều này bản thân mình, mặc dù không có ý tưởng. Nó có lẽ không phải là một giá trị boolean. Có trạng thái nào khác ngoài kích hoạt hoặc vô hiệu hóa không?
James ALLwood

2
@James Allwood Không. Mage_Catalog_Model_ Productt_Status định nghĩa STATUS_ENABLED và STATUS_DISABLED, không có gì khác.
Benubird

Câu hỏi hay, vô tình giúp trả lời một cái gì đó tôi đang cố gắng tìm ra!
SR_Magento

Câu trả lời:


20

Trước hết, các giá trị thậm chí không quan trọng.
Sử dụng trong mã của bạn các hằng số này Mage_Catalog_Model_Product_Status::STATUS_ENABLEDMage_Catalog_Model_Product_Status::STATUS_DISABLED.
Lý do tôi tìm thấy cho đến nay là khi bạn muốn tạo một sản phẩm, trong hầu hết các trường hợp bạn muốn nó được kích hoạt. Nếu giá trị cho trạng thái bị vô hiệu hóa 0, thì giá trị này sẽ được chọn vì cách các giá trị hiện tại được chuyển qua biểu mẫu thông qua $form->setValues($data).
Khi tạo một sản phẩm $datatrống và trong trường hợp thả xuống, 0 = trống.
[EDIT]
Tôi chỉ nhớ một cái gì đó khác.
Ban đầu trạng thái có một bảng riêng và có 3 giá trị có thể.

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

Và bạn có thể thêm nhiều hơn nữa. kiểm tra app/code/core/Mage/Catalog/sql/catalog_setup/mysql4-install-0.7.0.php.
Cách tiếp cận này đã được đưa vào mysql4-upgrade-0.7.4-0.7.5.phpvà tôi đoán rằng để tương thích, họ giữ nguyên id của các trạng thái.

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

"Trước hết, các giá trị thậm chí không quan trọng." Đó là khi bạn đang tạo một tệp nhập csv!
jscar

Không họ không. Bạn chỉ có thể mù quáng lấy các giá trị và sử dụng chúng trong quá trình nhập.
Marius

OK, tôi nghĩ rằng tôi hiểu điểm ban đầu của bạn bây giờ. Hãy để tôi nói lại - điều quan trọng là phải biết các giá trị là gì khi thực hiện nhập :) Thực tế là 1 & 2 là phản trực giác. Sẽ mong đợi 0 & 1
jscar

-1

giá trị trạng thái sản phẩm đến từ trường chọn "trạng thái" từ quản lý sản phẩm trong quản trị viên. "được bật" và "bị vô hiệu hóa" là các tùy chọn của trường chọn có giá trị 1 và 2. đây không phải là giá trị boolean.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.