Sự khác biệt giữa thuộc tính do người dùng xác định và thuộc tính không do người dùng xác định là gì?


11

Tôi có một thuộc tính khách hàng được định nghĩa như sau:

$customerSetup->addAttribute(Customer::ENTITY, "attr_code",  [
            "type"     => "varchar",
            "backend"  => "",
            "label"    => "Attribute Label",
            "input"    => "text",
            "source"   => "Magento\Eav\Model\Entity\Attribute\Source\Table",
            "visible"  => true,
            "required" => false,
            "default"  => "",
            "frontend" => "",
            "unique"   => false,
            "note"     => "",
            'system'   => 0,
            'user_defined' => true
]);

Câu hỏi của tôi là: sự khác biệt về thuộc tính nếu tôi đặt user_definedthành falsegì? Và trong những tình huống tôi nên đặt user_definedra truehoặc false?

Câu trả lời:


22

Trên thực tế Magento user_d xác định = các thuộc tính sai được gọi là thuộc tính hệ thống. Vì vậy, Magento có một số thuộc tính hệ thống của họ, mà chúng ta không thể xóa khỏi bảng quản trị. Vì vậy, magento sẽ không cho phép thuộc tính hệ thống bị xóa. Chúng tôi có thể xóa chúng thông qua cơ sở dữ liệu nhưng nó không an toàn.

Vì vậy, các thuộc tính được yêu cầu cao để chạy một hệ thống loại thuộc tính mà chúng ta có thể tạo như các thuộc tính hệ thống. Nhưng ở phía đối diện, chúng ta có thể dễ dàng xóa các thuộc tính do người dùng xác định khỏi bảng quản trị.

Hy vọng nó sẽ giúp Cảm ơn.


5

Các thuộc tính hệ thống Magento được đặt thành falsecho user_d xác định để các thuộc tính tùy chỉnh của chúng ta nên được đặt thành true. Thuộc tính hệ thống không thể bị xóa vì vậy nếu bạn đặt falsethành user_d xác định , thuộc tính của bạn sẽ hoạt động như thuộc tính hệ thống.


1
Vì vậy, ý bạn là nó chỉ để chỉ, không có sự khác biệt thực sự giữa chúng?
PY Yick

3

Để thêm vào điều này:

Nếu bạn thêm thuộc tính thông qua Install-/ UpdateSchemahãy chắc chắn để thêm vào 'user_defined' => true. Chỉ các thuộc tính không phải hệ thống (ví dụ: is_user_d xác định = 1) có thể được sử dụng cho các sản phẩm có thể định cấu hình.


2

Trên thực tế, tôi nhận thấy một sự khác biệt lớn khi tôi học Magento 1 . Nếu một thuộc tính được đặt thành user_d xác định = true , thì nó sẽ không được tạo trong bảng eav_entity_attribution . Nhưng bạn vẫn có thể tìm thấy nó trong bảng eav_attribution . Nếu được đặt user_d xác định = false , thì khi được tạo, nó sẽ xuất hiện trong cả hai bảng eav_entity_attributioneav_attribution . Nhưng bù lại, tôi không biết tại sao điều này lại tạo ra sự khác biệt / ảnh hưởng.

Tôi không chắc chắn về Magento 2, nhưng tôi đoán bạn có thể xác minh nó dễ dàng và cho người khác biết.


1

Nếu một thuộc tính được đặt là 'user_d xác định' thì người dùng có thể xác định các giá trị tùy chọn bên trong giao diện người dùng thuộc tính.

Tuy nhiên, nếu bạn đang sử dụng một mô hình nguồn thì 'user_d xác định' phải được đặt thành false, nếu không các tùy chọn từ mô hình nguồn không được tải.


1

user_d xác định = các thuộc tính thực thường được tạo bởi người quản lý danh mục để có thông tin cụ thể về sản phẩm.
user_d xác định = false cho các thuộc tính mặc định Magento cần thiết cho một số chức năng để hoạt động hoặc bất kỳ mô-đun nào cung cấp một số tính năng bổ sung dựa trên thuộc tính, như sku , qty , website_ids , product_online là các thuộc tính hệ thống cần thiết để quản lý số lượng và phạm vi của sản phẩm, theo cách tương tự là_featured hoặc show_on_homepage có thể là một số thuộc tính đang làm gì đó trong phần phụ trợ để cung cấp một số tính năng và không nên bị xóa bởi người dùng quản trị viên có thể phá vỡ chức năng.


1

Một điều khác mà người dùng xác định là nó xác định xem bạn có thể chỉnh sửa hay không các tùy chọn của thuộc tính từ trang chỉnh sửa thuộc tính ở văn phòng hỗ trợ, nếu bạn có một thuộc tính có nhãn cụ thể mà bạn không muốn người dùng quản trị viên thay đổi, bạn nên đặt "user_d xác định" thành false.

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.