[英]Fatal error: Call to a member function findAll() on null in TYPO3
我想獲取存儲庫的對象,但出現下一個錯誤
在null上調用成員函數findAll()
錯誤行是$projects = $this->projectRepository->findAll();
首先使用對象管理器來獲取存儲庫,但是它沒有用。 當前配置為:在控制器中
/**
*projectRepository
*
* @var \VENDOR\MyExtName\Domain\Repository\ProjectRepository
* @inject
*/
protected $projectRepository = null;
和存儲庫
class ProjectRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
public function createQuery() {
$query = parent::createQuery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
return $query;
}
}
findByUid($uid)
也會發生這種情況
這些對象存在於數據庫中,在BE中可見。
我清理了緩存,刪除了typo3temp目錄的內容,並遵循了有關類似錯誤的問題(我認為),該問題是Call to a member function findAll() on a non-object
,但它不起作用,我Call to a member function findAll() on a non-object
的異常是不同。
感謝您的幫助,請指導我糾正此錯誤
此錯誤幾乎總是由extbase的注釋“編譯”引起的,並且與緩存有關。 您說您清除了緩存並刪除了typo3temp的內容,但是緩存清除方法大不相同,它們不適用於每個緩存。
例如,僅使用安裝工具的“清除緩存”按鈕清除注釋緩存。 TYPO3后端頂部的工具欄圖標不會清除這些類型的緩存。
注釋高速緩存將不會存儲在typo3temp文件夾afaik中,但會在數據庫中有其自己的部分。 絕對不要通過手動刪除typo3temp文件夾內容來完成緩存清除,而總是通過安裝工具或TYPO3后端或CLI中的相應按鈕或命令來清除。
最后,有一個PHP類的自動加載緩存,安裝工具也無法清除它。 因此,如果在開發中的擴展中添加新的PHP類,則需要通過extensionmanager卸載並重新安裝擴展。 如果您使用composer安裝TYPO3實例,則它又有些不同。 在這種情況下,您可以通過鍵入命令composer dump-autoload
清除composer的類加載緩存來清除composer dump-autoload
加載緩存,因為TYPO3在composer模式下正在使用它。
我猜您只是沒有嘗試使用“安裝工具”按鈕來清除緩存。
如果您忘記將存儲庫注入控制器,則會發生此錯誤:
/**
*projectRepository
*
* @var \VENDOR\MyExtName\Domain\Repository\ProjectRepository
* @inject
*/
protected $projectRepository = null;
如果使用__construct方法,請注意不要鍵入__constract。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.