我正在尝试开始使用TYPO3扩展,并且正在关注this教程以了解基础知识。
在后端一切正常,但在前端我得到一个错误:
糟糕,发生错误!代码:20170209104827c3b58d58 - {“exception”:“异常'ReflectionException',消息'Class 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);
}
}
?>
删除反斜杠 - 试试
<?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'
);
在安装了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
您可能还必须在后端清除缓存。
看起来你的班级没有自动加载。如果您不使用composer进行自动加载,请查看您的typo3conf / autoload / autoload_classmap.php文件。
您应该找到与您的文件对应的条目。您将看到是否有路径错误。