0

当从 GraphiQl 界面、我的前端应用程序或像 Insomnia 这样的 API 浏览器查询全局变量时,CraftQL 返回一个错误Trying to get property of non-object

我正在运行 Craft 3.1.8 和 CraftQL 1.3.1。

query getGlobalTest {
  globals {
    ... on GlobalsSet {
      test {
        ... on Test {
          test
        }
      }
    }
  }
}

错误发生在vendor/markhuot/craftql/src/Types/Query.php第 215 行。

foreach ($setIds as $id) {
  $set = \Craft::$app->globals->getSetById($id, $siteId);
  $sets[$set->handle] = $set;  <-- Error line
}

查询全局变量时会发生这种情况。我在某处读到这与 Craft 3.1 中的 Craft 更新到 UUID 有关,但是,我不确定。

4

1 回答 1

0

该错误仅意味着您的 getSetById() 查询没有返回任何内容。您也不会将 UUID 传递给它。它需要一个 int。你确定你的 $siteId 变量是正确的吗?如果您想避免错误,可以将其添加到您的代码中:

foreach ($setIds as $id) {
    if ($set = \Craft::$app->globals->getSetById($id, $siteId)) {
        $sets[$set->handle] = $set;
    }
}

但我建议看一下 $siteId,或者完全删除它。

于 2019-02-11T20:27:00.430 回答