選択した複数選択属性の値を取得


14

次の「車」製品を取ります:Volkswagen Golf

car_options次の可能なオプションとそのIDを持つ複数選択属性があります。

  • Airco(id = 123)が選択されました
  • ラジオ(id = 124)が選択されました
  • Bluetooth(id = 125)
  • ナビゲーション(id = 126)

この製品にはラジオとAircoが選択されています。これら2つの値(ラジオ、airco)を取得して表示するにはどうすればよいですか?$ _productが与えられます。

回答:


19

これを試して:

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

出力がありません!これはドロップダウンではなく、複数選択属性です!
SPRBRN 14年

それはまだマルチセレクトで動作するはずです、私は自分で試しました。var_dump($_product->getData('car_options');出力を試してみてください。それがコンマで区切られた文字列である必要があります。そうでない場合は、サードパーティのモジュールが干渉しているとしか想像できません。
メイヤーズ14年

それでも出力はありません。いくつかのモジュールを使用しますが、属性を台無しにするものは知りません。
SPRBRN 14年

$_product->getData('car_options')NULLが返された場合、製品コレクションに追加されていないことを意味します。私たちは、あなたがこの属性にアクセスしようとしている場所についての詳細を知る必要があります
メイヤーズ

私は解決策を見つけました-私の答えをご覧ください。
SPRBRN 14年

2
$ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance(); $ product = $ objectManager-> get( 'Magento \ Catalog \ Model \ Product')-> load($ product_id);

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

うまくいきます。


素晴らしい...それは魅力のように動作します!!!!!
Sneha Panchal

知ってうれしい:) @SnehaPanchal
サミールバヤニ

0

次のコード

  1. この製品で選択されたオプションの値ID 123,124を返します
  2. それを配列に変換します:array(123,124)
  3. 次に、これらのオプションのラベルを見つけます:123 => Aircoおよび124 => Radio
  4. テキスト文字列で値を返します:Airco、Radio
$ _attribute_code = 'car_options';
$ car_options_csv = Mage :: getResourceModel( 'catalog / product')-> getAttributeRawValue($ productId、$ _attribute_code、$ storeId); //戻り値:123,124
$ car_options = explode( '、'、$ car_options_csv);
$ attributeId = Mage :: getResourceModel( 'eav / entity_attribute')-> getIdByCode( 'catalog_product'、$ _ attribute_code);
$ attribute = Mage :: getModel( 'catalog / resource_eav_attribute')-> load($ attributeId);
$ attributeOptions = $ attribute-> getSource()-> getAllOptions();

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

痛い-あなたは通常その道を行きたくない。特に、上記のMayerの答えは問題なく機能します。また、この方法でMagentoの翻訳システムをバイパスしていないかどうかもわかりません-チェックはしていません。
ワークフロー14年

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.