[英]TYPO3 Lazy Loading Error
我收到錯誤
傳遞給 [...]\\FrontendUserRepository::findMasterByVkbur() 的參數 1 必須是 [...]\\MyModel 的實例,給定 TYPO3\\CMS\\Extbase\\Persistence\\Generic\\LazyLoadingProxy 的實例,在 [... ]\\MyController.php 第 123 行
為什么參數仍然是“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 行沒有收到此錯誤。
這是一個話題,但被放棄了。
解決方案似乎是您評論的內容:
if ($this->feuser->getVkbur() instanceof \TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy) {
$vkbur = $this->feuser->getVkbur()->_loadRealInstance();
} else {
$vkbur = $this->feuser->getVkbur();
}
$frontendUsers = $this->frontendUserRepository->findMasterByVkbur(vkbur);
最好的解決方案似乎是在 getter 方法中檢查變量的類型:
/**
* @return \MyVendor\MyExt\Domain\Model\MyModel $vkbur
*/
public function getVkbur() {
if($this->vkbur instanceof \TYPO3\CMS\Extbase\Persistence\Generic\LazyLoadingProxy) {
$this->vkbur->_loadRealInstance();
}
return $this->vkbur;
}
在某些情況下,似乎仍然需要檢查如上所示的 LazyLoadingProxy。 但這不應該像這里解釋的那樣解決嗎? https://wiki.typo3.org/Enhanced_Lazy_Loading
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.