首页 > 解决方案 > “未声明的参数传递给 ViewHelper”异常

问题描述

更新 TYPO3 后,我得到一个TYPO3Fluid\Fluid\Core\ViewHelper\Exception“传递给 ViewHelper 的未声明参数......有效参数是。”

标签: typo3fluidtypo3-9.xview-helpers

解决方案


提示:使用 rect 进行这些(和其他)转换!TYPO3 的功能可用,请参阅


这可能是由于使用已被删除的功能的扩展。仅使用 TYPO3 内核,您应该不会看到此错误。

在您的扩展中:如果您仍然在 ViewHelper 类中使用带有参数的 render() 方法,您可能需要替换它:


前:

public function render(Mail $mail, $type = 'web', $function = 'createAction')

后:

public function initializeArguments()
{
    parent::initializeArguments();

    $this->registerArgument('mail', Mail::class, 'Mail', true);
    $this->registerArgument('type', 'string', 'type: web | mail', false, 'web');
    $this->registerArgument('function', 'string', 'function: createAction | senderMail | receiverMail', false, 'createAction');
}

public function render()
{
    $mail = $this->arguments['mail'];
    $type = $this->arguments['type'] ?? 'web';
    // ...  

}

此外,

  • 如果不需要使用render()(例如,除非您需要访问 $this 变量),出于性能原因,您可能需要切换到renderStatic()(另请参阅其他 StackOverflow 答案以获得澄清)
  • 从类继承TYPO3Fluid\Fluid\Core\ViewHelper而不是TYPO3\CMS\Fluid\Core\ViewHelper
// use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;

文档:

变更日志:


推荐阅读