Symfony3.4项目展示页报错:属性/方法无公共访问权限
解决Symfony 3.4中Project实体属性访问错误的问题
我之前处理过Symfony项目里类似的坑,这完全是实体类getter方法的命名不符合Symfony属性访问规范导致的。你遇到的两个错误都能通过修正getter方法的名称解决:
问题根源
Twig模板在访问实体属性(比如{{ project.fee }})时,会按照固定规则查找对应的访问方法:
- 先尝试调用
$project->fee() - 不存在的话,再找
$project->getFee()(布尔属性会找isFee()) - 最后才会直接访问公共属性
$project->fee
你的Project实体里的两个getter都不符合这个规则:
fee字段的getter少写了一个t,写成了geFee(),正确应为getFee()attachmentId字段的getter名称不匹配属性名,写成了getAttachment(),正确应为getAttachmentId()
错误代码(关键部分)
// Entity/Project.php public function geFee() { return $this->fee; } public function getAttachment() { return $this->attachmentId; }
修正后的代码(关键部分)
// Entity/Project.php public function getFee() { return $this->fee; } public function getAttachmentId() { return $this->attachmentId; }
修正这两个方法名称后,Twig就能正确找到对应的访问方法,{{ project.fee }}和{{ project.attachmentId }}都能正常渲染,错误也就消失了。
内容的提问来源于stack exchange,提问作者DenishRajoo
相关产品推荐
相关产品推荐

