簡體   English   中英

drupal 8 commerce獲取產品返回空對象

[英]drupal 8 commerce get product returns empty object

所以我創建了一些產品並添加了一些數據:

在此處輸入圖片說明

在我的自定義路線中,我嘗試使用以下代碼獲取所有產品:

$products = \Drupal\commerce_product\Entity\Product::loadMultiple();
$response['data'] = $products;
$response['method'] = 'GET';
return new JsonResponse($response);

但是,這會返回以下響應:

{"data":{"3":{},"6":{},"7":{}},"method":"GET"}

誰能告訴我我做錯了什么?

JSON 響應未編碼超過第一級深度。 據我所知,在使用new JsonResponse()時您無法控制它。

一種解決方案是構建您自己的數據結構並手動編碼 JSON。 此解決方案使用序列化程序服務: https : //drupal.stackexchange.com/a/191474/70331

在你的情況下,像這樣的東西應該對完整的實體結構進行編碼。

use Drupal\commerce_product\Entity\Product;
use Symfony\Component\HttpFoundation\JsonResponse;
...

$products = Product::loadMultiple([$ids]);

$response['data'] = $products;
$response['method'] = 'GET';

$serializer = \Drupal::service('serializer');
$jsonResponse = JsonResponse::fromJsonString($serializer->serialize($response, 'json'));
return $jsonResponse;

如果使用“序列化器”,最好通過依賴注入將其提供給控制器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM