【发布时间】:2016-12-09 10:59:17
【问题描述】:
我得到了错误
参数 1 传递给 [...]\FrontendUserRepository::findMasterByVkbur() 必须是 [...]\MyModel 的实例, TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy 的实例 给定的,在第 123 行的 [...]\MyController.php 中调用
为什么参数仍然是“LazyLoadingProxy”而不是“MyModel”?
这是 MyController.php 中的第 123 行:
$frontendUsers = $this->frontendUserRepository->findMasterByVkbur($this->feuser->getVkbur());
这是“vkbur”对象:
/**
* @var \MyVendor\MyExt\Domain\Model\MyModel
* @lazy
*/
protected $vkbur = null;
之前“使用”对象时,例如与...
\TYPO3\CMS\Core\Utility\DebugUtility::debug($this->feuser->getVkbur());
...我在第 123 行没有收到此错误。
【问题讨论】:
-
我在getter函数“getVkbur”中使用函数“_loadRealInstance”找到了一种解决方法,但Extbase应该自动执行此操作,不是吗?
-
Extbase 不会自动执行此操作,Fluid 会。您可以在模板中访问延迟加载对象的属性,Fluid 将负责解析对象。但如果你想在 ControllerAction 中访问它们,你必须先 _loadRealInstance。