Skip to main content
edited body
Source Link
HelgeB
  • 4.5k
  • 2
  • 11
  • 27

I hope you don't have the intention to "hack" Magento core files. I recommend to create your own classes / interfaces for that!

Anyway if you are implementing a custom method updateStockItems for a webapi which updates more stockitems with a single request you should take care of the right method signature: You are expecting an array of stock items, therefore your input parameter should be of thetthat type.

Your interface:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems);

Your method implementation:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems)
{
    foreach ($stockItems as $stockItem){
        //do whatever with your stock item
    }
};

Please take care to use only parameter in your JSON objects which match the used interfaces, in this example \Magento\CatalogInventory\Api\Data\StockItemInterface. So putting there some key sku doesn't make sense and should either be ignored by Magento or give you an errererror in the API call.

Here is the documentation about the usage of custom webservices.

https://devdocs.magento.com/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.html

I hope you don't have the intention to "hack" Magento core files. I recommend to create your own classes / interfaces for that!

Anyway if you are implementing a custom method updateStockItems for a webapi which updates more stockitems with a single request you should take care of the right method signature: You are expecting an array of stock items, therefore your input parameter should be of thet type.

Your interface:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems);

Your method implementation:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems)
{
    foreach ($stockItems as $stockItem){
        //do whatever with your stock item
    }
};

Please take care to use only parameter in your JSON objects which match the used interfaces, in this example \Magento\CatalogInventory\Api\Data\StockItemInterface. So putting there some key sku doesn't make sense and should either be ignored by Magento or give you an errer in the API call.

Here is the documentation about the usage of custom webservices.

https://devdocs.magento.com/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.html

I hope you don't have the intention to "hack" Magento core files. I recommend to create your own classes / interfaces for that!

Anyway if you are implementing a custom method updateStockItems for a webapi which updates more stockitems with a single request you should take care of the right method signature: You are expecting an array of stock items, therefore your input parameter should be of that type.

Your interface:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems);

Your method implementation:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems)
{
    foreach ($stockItems as $stockItem){
        //do whatever with your stock item
    }
};

Please take care to use only parameter in your JSON objects which match the used interfaces, in this example \Magento\CatalogInventory\Api\Data\StockItemInterface. So putting there some key sku doesn't make sense and should either be ignored by Magento or give you an error in the API call.

Here is the documentation about the usage of custom webservices.

https://devdocs.magento.com/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.html

Source Link
HelgeB
  • 4.5k
  • 2
  • 11
  • 27

I hope you don't have the intention to "hack" Magento core files. I recommend to create your own classes / interfaces for that!

Anyway if you are implementing a custom method updateStockItems for a webapi which updates more stockitems with a single request you should take care of the right method signature: You are expecting an array of stock items, therefore your input parameter should be of thet type.

Your interface:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems);

Your method implementation:

/**
 * 
 * @param \Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems
 * @return int
 * @throws \Magento\Framework\Exception\NoSuchEntityException
 */
public function updateStockItems(\Magento\CatalogInventory\Api\Data\StockItemInterface[] $stockItems)
{
    foreach ($stockItems as $stockItem){
        //do whatever with your stock item
    }
};

Please take care to use only parameter in your JSON objects which match the used interfaces, in this example \Magento\CatalogInventory\Api\Data\StockItemInterface. So putting there some key sku doesn't make sense and should either be ignored by Magento or give you an errer in the API call.

Here is the documentation about the usage of custom webservices.

https://devdocs.magento.com/guides/v2.3/extension-dev-guide/service-contracts/service-to-web-service.html