TYPO3教程扩展,控制器不存在

2023-11-26

我正在尝试开始使用 TYPO3 扩展并正在关注this教程来了解基础知识。

在后端一切正常,但在前端我收到错误:

糟糕,出现错误!代码:20170209104827c3b58d58 - {“异常”:“带有消息“类”的异常“ReflectionException” Tx_Inventory_Controller_InventoryController 不存在'

我的文件与教程中的完全相同。我不知道是什么原因造成的。我假设我在名称空间方面犯了一些愚蠢的错误,但它们似乎都是正确的。

控制器类可以在下面找到,位于typo3conf/ext/inventory/类/控制器/

<?php
   namespace \MyVendor\Inventory\Controller;
   use \TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
   use \TYPO3\CMS\Core\Utility\GeneralUtility;
   use \MyVendor\Inventory\Domain\Model\Repository\ProductRepository;

   class InventoryController extends ActionController {
        public function listAction() {
                $productRepository = GeneralUtility::makeInstance(ProductRepository::class)
                $products = $productRepository->findAll();
                $this->view->assign('products', $products);
        }
   }
?>

在安装了 TYPO3 V9(此处:9.4)的 Composer 中开发新扩展时,必须将自动加载部分添加到中央根 Composer.json 中。找到了这里(德语)。按照中的步骤操作OPs提到的教程导致核心异常:

Core: Exception handler (WEB): Uncaught TYPO3 Exception: #1278450972:
  Class MyVendor\StoreInventory\Controller\StoreInventoryController does not exist.
  Reflection failed.

只要扩展不是通过composer安装的,例如因为它是新开发的,composer就找不到合适的composer.json扩展目录中的文件。因此 TYPO3 在新扩展中找不到任何类Classes目录。要解决此问题,必须将自动加载配置添加到根目录composer.json。只需将以下行放入composer.json在安装基目录中:

{
    "repositories": [
        { "type": "composer", "url": "https://composer.typo3.org/" }
    ],
    ...
    "autoload": {
        "psr-4": {
            "MyVendor\\StoreInventory\\": "public/typo3conf/ext/store_inventory/Classes/"
        }
    }
}

然后重新生成自动加载配置:

composer dumpautoload

您可能还需要清除后端的缓存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TYPO3教程扩展,控制器不存在 的相关文章

  • Java常量池的用途是什么?

    我目前正在尝试更深入地研究Java虚拟机的规范 我一直在阅读 JVM 内幕 在线书籍有一个令人困惑的抽象我似乎无法理解 常量池 以下是这本书的摘录 对于它加载的每种类型 Java 虚拟机必须存储一个常量池 常量池是类型使用的一组有序常量 包

随机推荐