0

マルチオプションのすべてのオプションをトラバースするのに助けが必要です。

「product_properties」と呼ばれる新しい multioption-attribute で Product-class を使用します。ユーザーがフロントエンドで選択した optionID がリスト内のオプションと一致するかどうかを確認し、一致が見つかった場合は true を返す関数が必要です。

このようにして、たとえばユーザーが製品の「色」として「赤」を選択したかどうかを確認できます。

疑似コードでは、これが私が必要とするものです:

パラメータ: postedOptionID、currentObjectID

  1. object の属性 "product_properties" (multioption) を取得します。

  2. 「product_properties」の「Color」の各オプションについて

    2.1 投稿されたOptionID == optionIDの場合

    2.1.1 真を返す

ありがとう

4

1 に答える 1

1

私はついに方法を見つけました:)

  • $ product_properties_nameは、「ezmultioption」データ型であるクラス属性の名前です。私の場合、これは「product_properties」と呼ばれ、「Product」クラスの属性です。

まず、オブジェクトのすべての属性を取得します。$ contentObjectAttributes = $ contentObject-> version($ contentObject-> attribute('current_version'))-> contentObjectAttributes();

次に、それぞれをループして、「product_properties」を見つけます。

// Loop all attributes of the object's class         
foreach(array_keys($contentObjectAttributes) as $key)        
{
    $contentObjectAttribute = $contentObjectAttributes[$key];
    $contentClassAttribute = $contentObjectAttribute->contentClassAttribute();           
    $attributeIdentifier = $contentClassAttribute->attribute("identifier");     

    // Get 'product_properties'-attribute
    if ($attributeIdentifier == $product_properties_name)
    {               
        // Get the multioption
        $multioption_list = $contentObjectAttribute->content();

        // Loop all multioption lists (Color, Make, Brand etc.)
        foreach($multioption_list->attribute('multioption_list') as $index => $option)
        {       
            // Loop through this multioption and get all options (if 'Color', get 'Blue', 'Red', 'Green' etc.)
            foreach($option['optionlist'] as $option)
            {
                $optionValue = trim($option['value']);

                // if there's a match on $optionValue, do something interesting...  
            }                                               
        }           
    }       
}   
于 2011-04-01T15:36:25.643 に答える