Обход параметров атрибута ez-multioption в EZ Publish на стороне PHP - PullRequest
0 голосов
/ 16 марта 2011

Мне нужна помощь для обхода всех опций в мультиопции.

Я использую класс Product с новым атрибутом multioption с именем "product_properties".Мне нужна функция, чтобы проверить, соответствует ли optionID, выбранный пользователем во внешнем интерфейсе, опции в списке, и вернуть true, если совпадение найдено.

Таким образом, я могу проверить, если, например, пользователь выбрал "Красный »как« Цвет »на продукте.

В псевдокоде это то, что мне нужно:

Параметры: postsOptionID, currentObjectID

  1. Извлечь атрибут «product_properties» (multioption) для объекта.

  2. Для каждой опции для «Color» в «product_properties»

    2.1 Если опубликованоOptionID == optionID

    2.1.1 вернуть true

Спасибо

1 Ответ

1 голос
/ 01 апреля 2011

Я наконец нашел способ:)

  • $ 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...  
            }                                               
        }           
    }       
}   
...