我遵循了创建第一个扩展,但我收到了 500 错误并且:
[2017 年 3 月 14 日星期二 09:45:42] [警告] mod_fcgid:stderr:PHP 致命错误:
在第 251 行 /var/typo3_src/typo3_src-6.2.29/typo3/sysext/extbase/Classes/Persistence/Repository.php 中调用 null 的成员函数 createQueryForType()
服务器 PHP 5.6 和 Typo3 6.2.29
存储库代码:
<?php
namespace MyVendor\MyExt\Domain\Repository;
use \TYPO3\CMS\Extbase\Persistence\Repository;
class UserRepository extends Repository {
public function __construct() {
}
}
控制器动作:
public function getOnlineUsersAction() {
$userRepository = GeneralUtility::makeInstance(UserRepository::class);
$users = $userRepository->findAll();
// todo
}
尝试:
存储库代码:
<?php
namespace MyVendor\MyExt\Domain\Repository;
use \TYPO3\CMS\Extbase\Persistence\Repository;
class UserRepository extends Repository {
// Remove the __construct (or add parent::__construct)
}
控制器代码:
/**
* @var MyVendor\MyExt\Domain\Repository\UserRepository
* @inject
*/
$protected $userRepository;
public function getOnlineUsersAction() {
$users = $this->userRepository->findAll();
// todo
}
在 TYPO3 v12 中,我在通过
GeneralUtility::makeInstance()
从另一个模型对象创建存储库实例并使用该存储库上的方法时遇到了这个问题。
解决方案是在
Configuration/Services.yaml
中公开存储库。