선택된 다중 선택 속성의 값 가져 오기


14

폭스 바겐 골프 "차"제품을 가져 가라 .

car_options다음과 같은 가능한 옵션과 해당 ID를 가진 다중 선택 속성 이 있습니다.

  • 에어 코 (id = 123) 선택
  • 라디오 (id = 124) 선택
  • 블루투스 (id = 125)
  • 탐색 (id = 126)

이 제품에 대해 라디오 및 Airco가 선택되었습니다. 이 두 값 (라디오, 에어 코)을 가져 와서 표시하려면 어떻게해야합니까? $ _product가 제공됩니다.

답변:


19

이 시도:

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

출력이 없습니다! 이것은 드롭 다운이 아니라 다중 선택 속성입니다!
SPRBRN

그것은 여전히 ​​다중 선택과 함께 작동해야하며 방금 직접 시도했습니다. 시도 var_dump($_product->getData('car_options');하고 출력을 확인합니다. 쉼표로 구분 된 문자열이어야합니다. 그렇지 않으면 타사 모듈이 방해한다고 상상할 수 있습니다.
Mayers 2016 년

여전히 출력이 없습니다. 우리는 여러 개의 모듈을 사용하지만, 속성을 어지럽히는 것이 무엇인지 모른다.
SPRBRN

경우 $_product->getData('car_options')반환 NULL, 그것은 제품 컬렉션에 추가하지 의미합니다. 이 속성에 액세스하려는 위치에 대한 자세한 정보가 필요합니다.
Mayers

해결책을 찾았습니다-내 대답을 참조하십시오.
SPRBRN

2
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ product = $ objectManager-> get ( '마 젠토 \ 카탈로그 \ 모델 \ 제품')->로드 ($ product_id);

$ attributevalues ​​= $ product-> getResource ()-> getAttributeRawValue ($ product_id, 'my_custom_attribute_code', $ storeid);

작동합니다. 도움이 되길 바랍니다 ..


굉장 ... 매력처럼 작동합니다 !!!!!
Sneha Panchal

알아서 다행 :) @SnehaPanchal
Sameer Bhayani

0

다음 코드

  1. 이 제품에 대해 선택된 옵션의 값 ID를 반환합니다 : 123,124
  2. 배열로 바꿉니다 : array (123,124)
  3. 그런 다음 해당 옵션의 레이블을 찾습니다. 123 => Airco124 => Radio
  4. 텍스트 문자열로 값을 반환합니다 : Airco, Radio
$ _attribute_code = 'car_options';
$ car_options_csv = 마법사 :: getResourceModel ( 'catalog / product')-> getAttributeRawValue ($ productId, $ _attribute_code, $ storeId); // 반환 : 123,124
$ car_options = explode ( ',', $ car_options_csv);
$ attributeId = 마법사 :: getResourceModel ( 'eav / entity_attribute')-> getIdByCode ( 'catalog_product', $ _ attribute_code);
$ attribute = 마법사 :: getModel ( 'catalog / resource_eav_attribute')-> load ($ attributeId);
$ attributeOptions = $ attribute-> getSource ()-> getAllOptions ();

$ res = '';
foreach ($ attributeOptions as $ a)
{
    $ l = $ a [ 'label'];
    $ m = $ a [ '값'];
    if (strlen (trim ($ l))> 0 && in_array ($ m, $ car_options))
    {
        $ res. = trim ($ l). ',';
    }
}
echo substr ($ res, 0, -2) ;;

아야-보통 그 길을 가고 싶지 않습니다. 특히 Mayer의 대답은 위와 같이 잘 작동합니다. 나는 당신이 이런 방식으로 Magento의 번역 시스템을 우회하지 않는지 확실하지 않습니다.
워크 플로

0

@Mayers 덕분에 그의 솔루션은 네이티브 getAttributeText를 재정의하지 않는 것이 너무 좋습니다.

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

고객 모델에도 추가 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.