在EZ Publish PHP端遍历ez-multioption属性选项

时间:2011-03-16 12:08:26

标签: php ezpublish

我需要帮助来遍历多项选项中的所有选项。

我将Product-class与名为“product_properties”的新multioption属性一起使用。我需要一个函数来检查用户在前端选择的optionID是否与列表中的选项匹配,如果找到匹配则返回true。

这样我可以查看是否用户在产品上选择“红色”作为“颜色”。

在伪代码中,这就是我所需要的:

参数:postingOptionID,currentObjectID

  1. 在对象上获取属性“product_properties”(multioption)。

  2. 对于“product_properties”

    中“Color”的每个选项

    2.1如果postedOptionID == optionID

    2.1.1 return true

  3. 谢谢

1 个答案:

答案 0 :(得分:1)

我终于找到了办法:)

  • $ product_properties_name是类属性的名称,它是'ezmultioption'数据类型。就我而言,它被称为'product_properties',是'Product'-class的一个属性。

首先获取对象的所有属性: $ 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...  
            }                                               
        }           
    }       
}