簡體   English   中英

TYPO3 延遲加載錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM