Перейдите параметры атрибута ez-multioption в EZ Publish PHP-стороне

Мне нужна помощь, чтобы обойти все параметры в мультиварианте.

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

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

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

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

  1. Получить атрибут product_properties (множественный параметр) для объекта .

  2. Для каждого параметра «Цвет» в «свойствах продукта»

    2.1 Если опубликованоИдентификатор_опции ==Идентификатор_опции

    2.1.1 вернуть истину

Спасибо


person Henrik W. M.    schedule 16.03.2011    source источник


Ответы (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...  
            }                                               
        }           
    }       
}   
person Henrik W. M.    schedule 01.04.2011