Browse Source

handle API response missing sections

Olivier Massot 5 năm trước cách đây
mục cha
commit
70ddb7347b

+ 10 - 7
ot_templating/Classes/Domain/Repository/BaseApiRepository.php

@@ -45,20 +45,23 @@ abstract class BaseApiRepository extends Repository implements LoggerAwareInterf
     protected function getApiRecords(string $uri, $params = []) {
         $body = $this->getJson($uri, $params);
 
-        $page = (int)$params['page'] ?? 1;
+        $page = (int)($params['page'] ?? 1);
 
         // build up the members
         $members = [];
-        foreach ($body['hydra:member'] as $record) {
-            $instance = $this->memberToObject($record);
-            if ($instance != null) {
-                $members[] = $instance;
+
+        if (is_array($body['hydra:member'])) {
+            foreach ($body['hydra:member'] as $record) {
+                $instance = $this->memberToObject($record);
+                if ($instance != null) {
+                    $members[] = $instance;
+                }
             }
         }
 
         return new ApiPagedCollection(
-            (int)$body['hydra:totalItems'],
-            (int)$body['hydra:itemsPerPage'],
+            (int)($body['hydra:totalItems'] ?? 0),
+            (int)($body['hydra:itemsPerPage'] ?? 0),
             $page,
             $members
         );