技术原因是:没有找到模板。无法解析 class "LoginController" 中操作 "search" 的视图

The technical reason is: No template was found. View could not be resolved for action "search" in class "LoginController"

我是 typo3 的新手,我一直在尝试为其开发扩展。当我将插件加载到页面时出现错误:

抱歉,没有找到请求的视图。

技术原因是:没有找到模板。无法解析 class“LoginController”中“搜索”操作的视图。

在登录控制器中,我有一个函数 searchAction,而且我在里面有一个模板

可能是什么错误?我遵循了 typo3 的扩展开发文档。我什至从 GIT 下载了代码并尝试使用它,但没有成功。

首先检查 Configuration/TypoScript/setup.typoscript

中的模板根路径

并进行相应设置。

尝试将文件放在 \Resources\Private\Templates\Search。html,因为 \Resources\Private\Templates 是默认路径,除非您已更改它。

TL;DR: 它应该放在 Resources/Private/Templates/Login/Search.html

说明: 从你的问题我可以知道你已经使用了 https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/4-FirstExtension/6-adding-the-template.html 上的文档 这没有错,但你错过了关键的一步。当您查看他们使用的路径时,您会发现很多都是自动完成的。让我们分解一下。

他们在以下路径中有一个带有操作的控制器和一个与之相关的模板

  • 控制器: \MyVendor\StoreInventory\Controller\StoreInventoryController
  • 动作:listAction
  • 模板:EXT:store_inventory/Resources/Private/Templates/StoreInventory/List.html

如果仔细观察,您会发现模板路径由多个部分组成。

  1. 分机 (EXT:store_inventory)
  2. 默认模板目录路径(Resources/Private/Templates)
  3. 不带控制器后缀的控制器名称(StoreInventory)
  4. 没有动作后缀的动作名称(列表)
  5. .html后缀

如果您获取该信息并将其应用于您的案例,它将是:

  1. 分机 (EXT:your_extension_name)
  2. 默认模板目录路径(Resources/Private/Templates)
  3. 不带控制器后缀的控制器名称(登录)
  4. 没有动作后缀的动作名称(搜索)
  5. .html后缀

所以最终结果会是这样的

EXT:your_extension_name/Resources/Private/Templates/Login/Search.html

的确,您可以使用打字错误来更改此行为或设置覆盖或扩展模板等。但我认为你是在默认情况下工作,这应该是你现在的工作路径