当前位置: 首页 > 知识库问答 >
问题:

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

颜高格
2023-03-14

我正在尝试开始使用TYPO3扩展,并遵循本教程了解基本知识。

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

哎呀,发生错误!代码:20170209104827c3b58d58-{"异常":"异常'反射异常'消息'Tx_Inventory_Controller_InventoryController不存在'

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

控制器类可以在下面找到,并且位于typo3conf/ext/清单/类/控制器/

<?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);
        }
   }
?>

共有3个答案

高自怡
2023-03-14

删除反斜杠-尝试使用

<?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);
    }
}

请确保您添加Vendorname到扩展键,当您注册插件时,请参阅ext_tables.php并写下'MyVendor.'。_EXTKEY美元而不是_EXTKEY美元

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    'MyVendor.'.$_EXTKEY,
    'List',
    'The Inventory List'
);
萧芷阳
2023-03-14

看起来你的类没有自动加载。如果您不使用composer进行自动加载,请查看您的typo3conf/autoload/autoload\u类映射。php文件

您应该找到与您的文件对应的条目。您将看到是否存在路径错误。

宗政金鹏
2023-03-14

当在安装了TYPO3 V9的作曲家中开发一个新的扩展时(这里: 9.4),自动加载部分必须添加到中心根composer.json.在这里找到它(德语)。按照OPs中提到的教程中的步骤会导致一个核心异常

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

只要扩展没有通过作曲家安装,例如因为它是新开发的,作曲家就不会在扩展目录中找到合适的composer.json文件。因此,TYPO3在新的扩展目录中找不到任何类。要解决此问题,必须将自动加载配置添加到根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

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

 类似资料:
  • 如果要对已存在的控制器进行二次开发,为了方便升级不建议直接对内核文件直接修改该,您可以通过"MY_*.php"的形式进行二次开发。 例如您要对改phpcms/mood/index.php进行二次开发。您可以在与index.php同级的目录下建立"MY_index.php" MY_index.php代码如下: class MY_index extends index{ function __con

  • Szenario:我有两个扩展,它们用一些特定字段扩展了。在TYPO3 9之前,我必须使用以下打字脚本配置对新闻扩展的依赖关系进行配置: 模型扩展了基本扩展的模型: 在TYPO3 10中,在(中断:#87623): 只要您只有一个扩展新闻扩展名的扩展名,它就可以工作多久。如果您有第二个扩展并启用TYPO3缓存,您将得到一个错误,即在第一个扩展中添加的字段在新闻扩展的模板中不可用。奇怪的是,这个问题

  • 嘿,我对typo3很陌生,我想建立一个网站。我正在运行10.4版。安装了引导程序包的类型3中的4个。我已经试着跟着导游走了https://docs.typo3.org/typo3cms/extensions/gridelements/stable/ 我已将打字稿复制到模板设置中,但前端没有输出。记住我是新手,所以我还不能很好地理解打字稿<那我能做些什么呢? 编辑:我想使用GriElements,这

  • 我想制作一份扩展的副本,作为我自己扩展的基础。我如何克隆一个TYPO3扩展,以同样的行为开始我自己的扩展。我必须更改哪些文件和参数?

  • 我有一个扩展(extbase/fluid),主对象“Etikett”与子对象“Land”有关系。我想对输出进行排序,所以我在Etikett控制器中使用setDefaultOrderings方法,但没有得到结果,为什么?

  • 所以,我需要在CMS中做一个扩展,称为TYPO3。这里有一些关于这个扩展的信息: “对于新的TYPO3 6.1网站,我们需要一个新闻稿扩展(基于ExtBase/Fluid),该扩展应包含: 标题/说明 目前实际上没有详细视图的设计,所以没有详细视图的链接。所以,现在,请专注于前端列表视图。" 我以前从未使用过这个CMS,所以我读了一下,发现我需要使用扩展生成器来创建这个扩展。所以,我已经下载并安装