php 获取所有类别的自定义属性在Magento 2 REST API

k97glaaz  于 2023-03-11  发布在  PHP
关注(0)|答案(3)|浏览(106)

我正在使用Magento 2休息API列出所有类别。

{{生产链接}}/索引.php/剩余/V1/类别

它将返回所有类别,

{
    "id": 2,
    "parent_id": 1,
    "name": "Default Category",
    "is_active": true,
    "position": 1,
    "level": 1,
    "product_count": 0,
    "children_data": [{
        "id": 3,
        "parent_id": 2,
        "name": "T-shirts",
        "is_active": true,
        "position": 1,
        "level": 2,
        "product_count": 8,
        "children_data": []
    }, {
        "id": 4,
        "parent_id": 2,
        "name": "Phants",
        "is_active": true,
        "position": 2,
        "level": 2,
        "product_count": 0,
        "children_data": []
    }, {
        "id": 5,
        "parent_id": 2,
        "name": "Chridar",
        "is_active": true,
        "position": 3,
        "level": 2,
        "product_count": 0,
        "children_data": []
    }]
}

但是我需要为结果中的每个类别定制属性。但是现在我必须调用下面的API来获取定制属性。

{{生产链接}}/索引.php/剩余/V1/类别/3

它会回来的,

{
    "id": 3,
    "parent_id": 2,
    "name": "T-shirts",
    "is_active": true,
    "position": 1,
    "level": 2,
    "children": "",
    "created_at": "2017-06-02 11:21:16",
    "updated_at": "2017-06-02 11:21:16",
    "path": "1/2/3",
    "available_sort_by": [],
    "include_in_menu": true,
    "custom_attributes": [
        {
            "attribute_code": "description",
            "value": "<p>retest</p>"
        },
        {
            "attribute_code": "image",
            "value": "Screen_Shot_2017-06-16_at_4.06.35_PM.png"
        },
        {
            "attribute_code": "display_mode",
            "value": "PRODUCTS"
        },
        {
            "attribute_code": "is_anchor",
            "value": "1"
        },
        {
            "attribute_code": "path",
            "value": "1/2/3"
        },
        {
            "attribute_code": "children_count",
            "value": "0"
        },
        {
            "attribute_code": "custom_use_parent_settings",
            "value": "0"
        },
        {
            "attribute_code": "custom_apply_to_products",
            "value": "0"
        },
        {
            "attribute_code": "url_key",
            "value": "redwine"
        },
        {
            "attribute_code": "url_path",
            "value": "redwine"
        }
    ]
}

假设有**n个类别,我需要调用n**API来获取自定义属性,那么是否有一个API可以在一个API中获取所有类别的所有属性?

ttp71kqs

ttp71kqs1#

Magento API CatalogTreeInterface没有扩展Magento\Framework\Api\ExtensibleDataInterface,这意味着自定义属性或扩展属性不能添加到树响应中。唯一的解决方法是创建自己的模块和一个新的API调用,扩展树接口以添加自定义属性。

ffx8fchx

ffx8fchx2#

我想鲁本是对的。我已经建立了Magento扩展添加到类别树的图像属性,请看看https://github.com/troublediehard/mma-customapi

1tu0hz3e

1tu0hz3e3#

方法“\Magento\Catalog\Model\Category\Tree::getTree()”,其中对象树填充类别数据,它使用类别主模型“Magento\Catalog\Model\Category”的方法,实现接口“Magento\Catalog\API\Data\CategoryTreeInterface”。
例如,“$树-〉设置产品计数($节点-〉获取产品计数())"。
也就是说,Category模型实现的是CategoryTreeInterface,而不是它的父AbstractModel,所以不能使用setData()函数将属性添加到树数据中。
要实现此目标,需要执行几项操作:

  • 首选“Magento\目录\模型\类别”模型,以添加“getMyAttributeValue()”和“setMyAttributeValue()”等方法
  • 插件“after”到“\Magento\Catalog\Model\Category\Tree::getTree()”以将属性值添加到树。例如,“$tree-〉设置我的属性值($node-〉getMyAttributeValue())”

就是这样。

相关问题