Làm cách nào để tạo một sản phẩm có thể định cấu hình bằng API REST v2?


8

Tôi đang cố gắng tạo ra một sản phẩm có thể định cấu hình được gọi là "Kudos Configurable" với các tùy chọn cho người dùng chọn từ nhỏ màu xanh lá cây, lớn màu xanh lá cây, cam nhỏ và cam lớn.

Tôi đã đến giai đoạn mà một sản phẩm có thể định cấu hình đã được tạo thông qua API bằng cách sử dụng JSON sau đây trong yêu cầu PUT tới / rest / V1 / sản phẩm / KudosConfig.

    {
      "product":{
        "sku":"KudosConfig",
        "name":"Kudos Configurable",
        "price":30.00,
        "status":4,
        "type_id":"configurable",
        "attribute_set_id":4,
        "weight":1,
        "extension_attributes":{
          "stock_item":{
            "qty":10,
            "is_in_stock":true
           }
         }
       }
     }

Các sản phẩm con đã được tạo bằng API sử dụng JSON sau đây cho mỗi 4 mục với các thuộc tính cho kích thước và màu được đặt thông qua cùng một phương thức.

    {
      "product":{
        "sku":"KudosConfigGreenSmall ",
        "name":"Kudos Configurable Green Small",
        "price":30.00,
        "status":0,
        "type_id":"virtual",
        "visibility":1,
        "attribute_set_id":4,
        "weight":1,
        "extension_attributes":{
          "stock_item":{
            "qty":10,
            "is_in_stock":true
          }
        },
        "custom_attributes":[
          {
            "attribute_code":"kudos_colour",
            "value":"328"
          },
          {
            "attribute_code":"kudos_size",
            "value":"330"
          }
        ]
      }
    }

Điều này đang hoạt động tốt và các sản phẩm được tạo ra với các thuộc tính được đặt chính xác.

Tôi đã nghĩ rằng giai đoạn cuối cùng là sử dụng dịch vụ có thể cấu hình sản phẩm ProducttLinkManloymentV1 để liên kết các sản phẩm con nhưng sử dụng yêu cầu POST đến / rest / V1 / configureable-Products / KudosConfig / child với JSON sau đây trả về lỗi yêu cầu xấu HTTP 400.

    {
      "childSku":"KudosConfigGreenSmall"
    }

Tôi đang nghĩ có thể có một cái gì đó khác mà tôi cần phải làm trên sản phẩm mẹ nhưng tôi đang vật lộn để tìm ra cái gì. Trong danh mục dịch vụ ProducttRep repositoryV1, bạn có thể thêm vào một mảng configureable_product_options, tôi đã thử chơi với điều này nhưng chỉ nhận được lỗi yêu cầu xấu.

Bất kỳ ai cũng có thể làm sáng tỏ điều này sẽ được đánh giá rất cao, đã dành quá nhiều thời gian cho việc này.

BIÊN TẬP:

Bây giờ đã thử thêm configureable_product_options vào yêu cầu PUT của sản phẩm có thể định cấu hình, giờ đây nó trông như thế này.

    {
      "product":{
        "sku":"KudosConfig",
        "name":"Kudos Configurable",
        "price":30.00,
        "status":4,
        "type_id":"configurable",
        "attribute_set_id":4,
        "weight":1,
        "extension_attributes":{
          "stock_item":{
            "qty":10,
            "is_in_stock":true
          },
          "configurable_product_options":[
            {
              "attribute__id":"kudos_colour",
              "label":"Colour",
              "values":[
                {
                  "value_index":340
                },
                {
                  "value_index":341
                }
              ]
            },
            {
              "attribute__id":"kudos_size",
              "label":"Size",
              "values":[
                {
                  "value_index":343
                },
                {
                  "value_index":342
                }
              ]
            }
          ]
        }
      }
    }

Khi tôi thử điều này, tôi nhận được phản hồi 400 với thông báo:

Đã xảy ra lỗi trong khi lưu tùy chọn.

Không đặc biệt hữu ích ...

Một chút nhanh chóng của Googling cho thấy đây là vấn đề https://github.com/magento/magento2/issues/5580 .

Bước tiếp theo là xem khách hàng có hài lòng khi thực hiện hack trên tệp configureable.php không.

EDIT: Hiện tại đã thử thay đổi tệp configureable.php nhưng dường như không tạo ra sự khác biệt, vẫn nhận được cùng một lỗi nên lại bị vấp.

Câu trả lời:


6

Cuối cùng dường như có công việc này. Tôi nghĩ vấn đề là thuộc tính_id trong mảng tùy chọn sản phẩm có thể định cấu hình phải là id số, không phải mã thuộc tính, như sau:

        "configurable_product_options":[
        {
          "attribute__id":"192",
          "label":"Colour",
          "values":[
            {
              "value_index":340
            },
            {
              "value_index":341
            }
          ]
        },
        {
          "attribute__id":"193",
          "label":"Size",
          "values":[
            {
              "value_index":343
            },
            {
              "value_index":342
            }
          ]

Cũng đã thêm các liên kết sản phẩm trong cùng một yêu cầu để yêu cầu sản phẩm có thể định cấu hình cuối cùng trông như thế này:

    {
      "product":{
        "sku":"KudosConfig",
        "name":"Kudos Configurable",
        "price":30,
        "status":1,
        "type_id":"configurable",
        "attribute_set_id":4,
         "extension_attributes":{
           "stock_item":{
             "is_in_stock":true
           },
           "configurable_product_options":[
             {
               "attribute__id":"193",
               "label":"Colour",
               "position":0,
               "values":[
                 {
                   "value_index":340
                 },
                 {
                   "value_index":341
                 }
               ],
               "product_id":299
             },
             {
               "attribute__id":"192",
               "label":"Size",
               "position":1,
               "values":[
                 {
                   "value_index":343
                 },
                 {
                   "value_index":342
                 }
               ],
               "product_id":299
             }
           ],
         "configurable_product_links":[
           300,
           301,
           302,
           303
         ]
       }
     }
   }

Tại sao bạn thêm "sản phẩm": 299?
DevonDahon

Tôi không chắc chắn, cuối cùng nó không cần thiết và nó không nằm trong mã cuối cùng. Đó có lẽ là thứ tôi đang cố gắng để nó hoạt động
SD252

Tôi nhận ra rằng nó thực sự được thêm tự động khi tạo sản phẩm có thể cấu hình.
DevonDahon

Thưa ông, tôi có thể sử dụng mã này trong bộ điều khiển không? cho thêm sản phẩm cấu hình? Nếu có, sau đó tel cho tôi làm thế nào để tiết kiệm?
Nikhil waghela

Có, cảm thấy thoải mái khi sử dụng nó, tôi không chắc ý của bạn về cách lưu nó.
SD252
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.