首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到ViewHelper

找不到ViewHelper
EN

Stack Overflow用户
提问于 2015-03-28 17:34:23
回答 5查看 4.5K关注 0票数 1

我摆弄了8个多小时也没有解决它。我想要的就是在Fluid模板中调用ViewHelper。我以前也这样做过,但我从来没有遇到过类似的问题。

我的ViewHelper文件位于

代码语言:javascript
复制
EXTDIR/VendorName/Classes/ViewHelpers/SomeViewHelper.php.

在我的Fluid模板中,我使用名称空间

代码语言:javascript
复制
{namespace k=VendorName\Extname\ViewHelpers}.

在模板中的某个地方,我用来调用ViewHelper

代码语言:javascript
复制
{k:some()}.

ViewHelper脚本"SomeViewHelper.php“包含以下代码:

代码语言:javascript
复制
class SomeViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
    public function initializeArguments() { }

    public function render() {
        return 7;
    }
}

如您所见,整个过程非常简单,页面上的预期输出应该是"7“。但在前端调用页面会产生以下错误消息:

代码语言:javascript
复制
Oops, an error occurred!

Could not analyse class:VendorName\Extname\ViewHelpers\SomeViewHelper maybe not loaded
or no autoloader?"

这里可能出了什么问题有什么提示吗?

为迈克尔干杯

EN

回答 5

Stack Overflow用户

发布于 2016-01-23 22:54:20

如果所有内容都拼写正确,则即使在删除系统/配置缓存之后,ViewHelper也不会出现(无法分析。/可能未加载或没有自动加载器),请尝试在扩展管理器中重新安装扩展!

票数 6
EN

Stack Overflow用户

发布于 2015-03-28 21:13:07

viewHelper源文件的路径错误。

正确的路径应该是(不带vendorname):

代码语言:javascript
复制
EXTDIR/Classes/ViewHelpers/SomeViewHelper.php

您还需要确保您的viewHelper使用了正确的名称空间(如果您使用的是TYPO3 6+,请不要使用旧的Tx_类,而要使用名称空间)。

代码语言:javascript
复制
<?php
namespace VendorName\Extname\ViewHelpers;

class SomeViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
    public function initializeArguments() { }

    public function render() {
        return 7;
    }
}
票数 4
EN

Stack Overflow用户

发布于 2017-11-22 01:30:58

错误消息似乎指示找不到该类。

如果没有更多的信息,我可能会怀疑某个地方的打字错误(双关语不是故意的)。

以下内容假定您使用的是TYPO3 7而不是composer模式:

  1. 首先,请检查您的viewheper类是否已自动加载。这将有助于缩小问题的范围。在htdocs目录中的命令行上:grep SomeViewHelper typo3temp/autoload/autoload_classmap.php,如果ViewHelper类包含在自动加载文件中,这应该会给您带来一些帮助。
  2. 如果类不是自动加载的,您可能需要手动执行自动加载:在htdocs目录中的命令行中:php typo3/cli_dispatch.phpsh extbase extension:dumpclassloadinginformation有关详细信息,请参阅:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Autoloading/Index.html。有关更深入的信息,请参阅:http://insight.helhum.io/post/130876393595/how-to-configure-class-loading-for-extensions-in您可以在TYPO3 8的安装工具中找到此自动加载功能,因此,在这种情况下,您将不需要在命令行上运行该命令。
  3. 如果此功能也不起作用,请检查以下内容:

代码语言:javascript
复制
- Are you using namespace correctly in the class: `<?php namespace VendorName\Extname\ViewHelpers\SomeViewHelper;`
- Is the path (including Camelcase class name) correct: `/Classes/ViewHelpers/SomeViewHelper.php`

  1. 之后,清除系统缓存并重新启动如上所述的自动加载。

为了自动启动自动加载,您可能需要更新ext_emconf.php (如果使用的不是composer模式)或composer.json (如果使用的是composer模式)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29315591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档