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

发布于 2024-10-22 03:07:52 字数 421 浏览 3 评论 0原文

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

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

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

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

参数:postedOptionID、currentObjectID

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

  2. 对于“product_properties”中“颜色”的每个选项

    2.1 如果postedOptionID == optionID

    2.1.1 返回 true

谢谢

I need help to traverse all options in a multioption.

I use the Product-class with a new multioption-attribute called "product_properties". I need a function to check if the optionID the user chose on the front-end matches an option in the list, and return true if a match is found.

This way I can check if e.g. the user chose "Red" as the "Color" on a product.

In pseudo-code this is what I need:

Parameters: postedOptionID, currentObjectID

  1. Fetch attribute "product_properties" (multioption) on object .

  2. For each option for "Color" in "product_properties"

    2.1 If postedOptionID == optionID

    2.1.1 return true

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天生の放荡 2024-10-29 03:07:52

我终于找到了一种方法:)

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

I finally found a way :)

  • $product_properties_name is the name of a class-attribute that's an 'ezmultioption'-datatype. In my case it's called 'product_properties' and is an attribute on the 'Product'-class.

First get all of the object's attribute:
$contentObjectAttributes = $contentObject->version($contentObject->attribute( 'current_version' ) )->contentObjectAttributes();

and then loop each and find '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...  
            }                                               
        }           
    }       
}   
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文