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

时间:2017-02-09 09:55:43

标签: typo3 extbase

我尝试开始使用TYPO3扩展程序并按照this教程查看基础知识。

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

  

糟糕,发生错误!代码:20170209104827c3b58d58 -   {"例外":"例外' ReflectionException'与消息'类   Tx_Inventory_Controller_InventoryController不存在'

我的文件与教程中的文件完全相同。我不知道造成这种情况的原因。我假设我对命名空间犯了一些愚蠢的错误,但它们似乎都是正确的。

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

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

5 个答案:

答案 0 :(得分:3)

删除反斜杠 - 尝试

<?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 / p>

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    'MyVendor.'.$_EXTKEY,
    'List',
    'The Inventory List'
);

答案 1 :(得分:2)

在安装的TYPO3 V9(此处为9.4)的作曲家中开发新扩展时,必须将自动加载部分添加到中央根composer.json。找到了here (German)。遵循OPs mentioned tutorial中的步骤会导致核心异常:

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

您可能还必须在后端清除缓存。

答案 2 :(得分:0)

您的课程似乎没有自动加载。如果您不使用composer进行自动加载,请查看typo3conf / autoload / autoload_classmap.php文件。

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

答案 3 :(得分:0)

我遇到了完全相同的问题-如果Typo3安装是由作曲家完成的,就会发生。要解决此问题see this page of the docs

答案 4 :(得分:0)

尝试在ext_emconf.php中添加自动加载功能(替换“ Vendor \\ Extensionkey \\”),然后再次卸载并安装扩展程序(以重建PHP自动加载信息)

protractor.conf.js