我正在将网站从 TYPO3 8 升级到 TYPO3 9所有代码在 TYPO3 8 上运行良好。现在我必须适应很多,因为它来自更早的 TYPO3(TCA,学说,...)并抛出一些错误。目前我有一些页面的问题,我只收到这个错误(稍作修改):(1/2) #1278450972 TYPO3\CMS\Extbase\Reflection\Exception\UnknownClassException类 VendorName\VendorExtensionName\Domain\Model\TYPO3\CMS\Extbase\Persistence\ObjectStorage 不存在。反思失败。我假设它是由以下代码触发的:<?phpnamespace VendorName\VendorExtensionName\Controller;use TYPO3\CMS\Extbase\Annotation\Inject;class AnsprechpartnerController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { /** * ansprechpartnerRepository * * @Inject * @var \VendorName\VendorExtensionName\Domain\Repository\AnsprechpartnerRepository */ protected $ansprechpartnerRepository; [...] /** * action showDetail * * @return void */ public function showDetailAction() { $pids = $this->settings['pids']; $this->settings['ansprechpartner'] = explode(',', $this->settings['ansprechpartner']); foreach ($this->settings['ansprechpartner'] as $uid) { $person = $this->ansprechpartnerRepository->findByUid($uid); [...]因为最后一行在调试堆栈中。扩展有8种相互关联的记录。我假设因此定义了关系lazy并使用了对象存储。<?phpnamespace VendorName\VendorExtensionName\Domain\Model;use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;/** * * @package vendor_extension_name * */class Ansprechpartner extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {[...]/** * Organisationseinheit * * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VendorName\VendorExtensionName\Domain\Model\Organisation> * @Lazy */protected $organisationseinheit;/** * Dienstleistungen * * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\VendorName\VendorExtensionName\Domain\Model\AnsprechpartnerDienstleistung> * @Lazy */protected $dienstleistungen = NULL;[...]
3 回答

炎炎设计
TA贡献1808条经验 获得超4个赞
我们发现,这是由于 9.x 中的更改,现在 Annotations 和 TypeHints 中支持相对命名空间。
在 9.x 之前,Extbase 反射总是假设绝对命名空间。
如果有一个带有这个签名的方法,它在 9.x 之前工作(这是一个错误)并且从 9.x 开始不再工作:
public function setSomeStorage(TYPO3\CMS\Extbase\Persistence\ObjectStorage $storage) {
这必须是:
public function setSomeStorage(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $storage) {

冉冉说
TA贡献1877条经验 获得超1个赞
如果您收到一条错误消息,并带有这样的前导括号:(1/3)
那么在这种情况下搜索页面上的所有三个错误是值得的。
在我的情况下,最后一条消息错误消息提到了语法错误,然后该类自然不会加载 - 但我可以纠正语法错误,然后一切正常。
- 3 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消