TYPO3 8.2:ViewHelper 命名空间

TYPO3 8.2: ViewHelper Namespace

我尝试在 TYPO3 扩展中创建多个 ViewHelper。

    <?php
namespace PdvPolymer\ViewHelpers;
use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;

class ButtonUpViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper
{...

ViewHelper 位于目录 extension\Classes\ViewHelpers.

当我调用它时效果很好:

<div xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers" xmlns:p="http://typo3.org/ns/Extension/ViewHelpers">
<p:buttonUp></p:buttonUp>
</div>

但现在我尝试将 ViewHelper 放在子目录中,例如 extension\Classes\ViewHelpers\自定义.

ViewHelper 的新命名空间现在是:

namespace Extension\ViewHelpers\Custom;

现在我调用 ViewHelper:

<p:custom.buttonUp></p:custom.buttonUp>

...并得到如下错误:

Oops, an error occurred! Code: 2016091908135339232bbd 

我的问题是,我做错了什么? TYPO3 中的内部 Fluid-Extension 和我一样。 我查过了!

有人有想法吗?

有 2 个不同的问题。

首先,我建议避免在命名空间声明中使用子目录,而只使用 xmlns:p="http://typo3.org/ns/Extension/ViewHelpers"。在模板中调用 ViewHelper 时始终添加子目录路径,例如

 <p:custom.buttonUp></p:custom.buttonUp>

您不需要声明两次。

2)关于错误处理

使用 TypoScript config.contentObjectExceptionHandler = 0 为您的开发系统关闭它,您将看到更有用的消息。您可以在 docs.

中找到更多信息