Nhận giá trị của thuộc tính multiselect đã chọn


14

Lấy sản phẩm "xe hơi" sau đây: Volkswagen Golf .

Nó có một thuộc tính multiselect car_optionsvới các tùy chọn có thể sau đây và id của chúng:

  • Airco (id = 123) đã chọn
  • Đài (id = 124) đã chọn
  • Bluetooth (id = 125)
  • Điều hướng (id = 126)

Radio và Airco được chọn cho sản phẩm này. Làm cách nào tôi có thể nhận được hai giá trị đó (radio, airco) và hiển thị chúng? $ _sản phẩm được đưa ra.

Câu trả lời:


19

Thử đi:

echo $_product->getResource()->getAttribute('car_options')->getFrontend()->getValue($_product);

Tôi không nhận được đầu ra! Đây không phải là một danh sách thả xuống, mà là một thuộc tính multiselect!
XUÂN

Nó vẫn hoạt động với multiselect, tôi chỉ thử nó. Hãy thử var_dump($_product->getData('car_options');và kiểm tra đầu ra. Nó phải là một chuỗi được phân tách bằng dấu phẩy, nếu không thì tôi chỉ có thể tưởng tượng một mô-đun bên thứ 3 đang can thiệp.
Mayers

Vẫn không có đầu ra. Chúng tôi sử dụng một số mô-đun, nhưng tôi không biết bất kỳ điều gì gây rối với các thuộc tính.
XUÂN

Nếu $_product->getData('car_options')trả về NULL, điều đó có nghĩa là nó không được thêm vào bộ sưu tập sản phẩm của bạn. Chúng tôi sẽ cần biết thêm về nơi bạn đang cố gắng truy cập thuộc tính này
Mayers

Tôi đã tìm thấy một giải pháp - xem câu trả lời của tôi.
XUÂN

2
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ sản phẩm = $ objectManager-> get ('Magento \ Catalog \ Model \ Product') -> load ($ sản phẩm_id);

$ attributevalues ​​= $ sản phẩm-> getResource () -> getAttributionRawValue ($ sản phẩm_id, 'my_custom_attribution_code', $ storeid);

nó hoạt động .. Hy vọng nó sẽ giúp bạn ..


Tuyệt vời ... Nó hoạt động như một bùa mê !!!!!
Sneha Panchal

rất vui được biết :) @SnehaPanchal
Sameer Bhayani

0

Đoạn mã sau

  1. trả về id giá trị của các tùy chọn đã chọn cho sản phẩm này: 123.124
  2. biến nó thành một mảng: mảng (123.124)
  3. sau đó tìm nhãn của các tùy chọn đó: 123 => Airco124 => Radio
  4. và trả về các giá trị trong một chuỗi văn bản: Airco, Radio
$ _attribution_code = 'car_options';
$ car_options_csv = Mage :: getResourceModel ('catalog / sản phẩm') -> getAttributionRawValue ($ productId, $ _attribution_code, $ storeId); // trả về: 123.124
$ car_options = explode (',', $ car_options_csv);
$ propertyId = Mage :: getResourceModel ('eav / entity_attribution') -> getIdByCode ('catalog_product', $ _ property_code);
$ property = Mage :: getModel ('catalog / resource_eav_attribution') -> load ($ propertyId);
$ propertyOptions = $ thuộc tính -> getSource () -> getAllOptions ();

$ res = '';
foreach ($ propertyOptions là $ a)
{
    $ l = $ a ['nhãn'];
    $ m = $ a ['giá trị'];
    if (strlen (trim ($ l))> 0 && in_array ($ m, $ car_options))
    {
        $ res. = trim ($ l). ',';
    }
}
chất nền echo ($ res, 0, -2) ;;

Ouch - bạn thường không muốn đi trên con đường đó. Đặc biệt là vì câu trả lời của Mayer ở trên hoạt động tốt. Tôi cũng không chắc chắn nếu bạn không bỏ qua hệ thống dịch thuật của Magento theo cách này - mặc dù chưa được kiểm tra.
quy trình làm việc

0

Cảm ơn @Mayers, giải pháp của anh ấy quá tốt để không ghi đè lên getAttributionText gốc:

 public function getAttributeText($attributeCode)  
 {
    return $this->getResource()
        ->getAttribute($attributeCode)
        ->getFrontend()
        ->getValue($this);
 }

và để thêm vào mô hình khách hàng là tốt.

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.