我收到了错误
" hydra:description":"无法在非对象上获取属性。",
尝试实现自定义操作时。我试图弄清楚导致这个问题的原因,虽然我已经在stackoverflow和其他地方发现了十几个疯狂的猜测,但是那里发布的解决方案都不适用于我。
我试图找出如何调试此问题。错误消息中包含的跟踪和信息不太有用:
{
"@context": "/api/contexts/Error",
"@type": "hydra:Error",
"hydra:title": "An error occurred",
"hydra:description": "Unable to get a property on a non-object.",
"trace": [
{
"namespace": "",
"short_class": "",
"class": "",
"type": "",
"function": "",
"file": "/Users/tom/Code/api-platform/vendor/symfony/expression-language/Node/GetAttrNode.php",
"line": 73,
"args": []
},
{
"namespace": "Symfony\\Component\\ExpressionLanguage\\Node",
"short_class": "GetAttrNode",
"class": "Symfony\\Component\\ExpressionLanguage\\Node\\GetAttrNode",
"type": "->",
"function": "evaluate",
"file": "/Users/tom/Code/api-platform/vendor/symfony/expression-language/Node/GetAttrNode.php",
"line": 71,
"args": [
[
"array",
{
"constant": [
"array",
{
"compiler": [
"object",
"Closure"
],
"evaluator": [
"object",
"Closure"
]
}
],
"is_granted": [
"array",
{
"compiler": [
"object",
"Closure"
],
"evaluator": [
"object",
"Closure"
]
}
所有这些都告诉我一个关于它正在寻找哪个对象的哪个属性,它正在检查什么数据以及我应该在哪里寻找问题。
我已经尝试将var_dump()语句添加到我自己的代码和GetAttrNode.php中第73行之前的位置,但它没有帮助。似乎代码甚至没有击中我的控制器。我相当肯定问题不在我的控制器中,因为此时控制器只是文档中描述的存根(https://api-platform.com/docs/core/operations#creating-custom-operations-and-controllers)。
如何调试此问题并找出问题所在?
答案 0 :(得分:0)
根据您提供的堆栈跟踪,错误出在您的安全规则中。检查您的类中带有is_granted
批注的@ApiResource
属性的值,它有某种错误。