Fatal error: Call to a member function findAll() on null in TYPO3
Fatal error: Call to a member function findAll() on null in TYPO3
我想获取存储库的对象,但出现下一个错误
Call to a member function findAll() on null
错误行是$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)
也会发生这种情况
对象在DB中存在,在BE中可见。
我清理了缓存,删除了 typo3temp 目录的内容,并按照有关类似错误的问题(我认为)Call to a member function findAll() on a non-object
进行了操作,但它没有用,我遇到的异常是不同的。
感谢您的帮助,请指导我更正此错误
这个错误几乎都是extbase注解"compiling"引起的,跟缓存有关。你说你清除了缓存并删除了typo3temp的内容,但是清除缓存的方法非常不同,并不是对每个缓存都有效。
例如,注释缓存只能通过使用安装工具的清除缓存按钮来清除。 TYPO3 后端顶部的工具栏图标不会清除这些类型的缓存。
注释缓存不会存储在 typo3temp 文件夹中,但在数据库中有自己的部分。缓存清除不应通过手动删除 typo3temp 文件夹内容来完成,而应始终通过安装工具或 TYPO3 后端或 CLI 中的适当按钮或命令来完成。
最后,还有一个 PHP classes 的自动加载缓存,安装工具也不会清除它。因此,如果您在开发中向扩展添加新的 PHP class,则需要通过扩展管理器卸载并重新安装扩展。如果你使用 composer 来安装你的 TYPO3 实例,它又有点不同。如果是这种情况,您可以通过键入命令 composer dump-autoload
清除自动加载缓存以清除作曲家的 class 加载缓存,因为如果处于作曲家模式,TYPO3 正在使用它。
我猜您只是没有尝试使用“安装工具”按钮来清除缓存。
如果您忘记在控制器中注入存储库,则会出现此错误:
/**
*projectRepository
*
* @var \VENDOR\MyExtName\Domain\Repository\ProjectRepository
* @inject
*/
protected $projectRepository = null;
如果您使用 __construct 方法,请注意不要键入 __constract。
我想获取存储库的对象,但出现下一个错误
Call to a member function findAll() on null
错误行是$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)
对象在DB中存在,在BE中可见。
我清理了缓存,删除了 typo3temp 目录的内容,并按照有关类似错误的问题(我认为)Call to a member function findAll() on a non-object
进行了操作,但它没有用,我遇到的异常是不同的。
感谢您的帮助,请指导我更正此错误
这个错误几乎都是extbase注解"compiling"引起的,跟缓存有关。你说你清除了缓存并删除了typo3temp的内容,但是清除缓存的方法非常不同,并不是对每个缓存都有效。
例如,注释缓存只能通过使用安装工具的清除缓存按钮来清除。 TYPO3 后端顶部的工具栏图标不会清除这些类型的缓存。
注释缓存不会存储在 typo3temp 文件夹中,但在数据库中有自己的部分。缓存清除不应通过手动删除 typo3temp 文件夹内容来完成,而应始终通过安装工具或 TYPO3 后端或 CLI 中的适当按钮或命令来完成。
最后,还有一个 PHP classes 的自动加载缓存,安装工具也不会清除它。因此,如果您在开发中向扩展添加新的 PHP class,则需要通过扩展管理器卸载并重新安装扩展。如果你使用 composer 来安装你的 TYPO3 实例,它又有点不同。如果是这种情况,您可以通过键入命令 composer dump-autoload
清除自动加载缓存以清除作曲家的 class 加载缓存,因为如果处于作曲家模式,TYPO3 正在使用它。
我猜您只是没有尝试使用“安装工具”按钮来清除缓存。
如果您忘记在控制器中注入存储库,则会出现此错误:
/**
*projectRepository
*
* @var \VENDOR\MyExtName\Domain\Repository\ProjectRepository
* @inject
*/
protected $projectRepository = null;
如果您使用 __construct 方法,请注意不要键入 __constract。