Typo3 &引用;传递给ViewHelper的未声明参数";例外情况

Typo3 &引用;传递给ViewHelper的未声明参数";例外情况,typo3,fluid,typo3-9.x,view-helpers,Typo3,Fluid,Typo3 9.x,View Helpers,更新TYPO3后,我得到一个TYPO3Fluid\Fluid\Core\ViewHelper\Exception“传递给ViewHelper的未声明参数…有效参数为。”这可能是由于使用已删除功能的扩展。仅使用TYPO3 core,您不应该看到此错误 在扩展中:如果在ViewHelper类中仍使用带有参数的render()方法,则可能需要替换此方法: 之前: public函数呈现(Mail$Mail,$type='web',$function='createAction') 之后: publ

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

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

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


之前:

public函数呈现(Mail$Mail,$type='web',$function='createAction')

之后:

public函数初始化earguments()
{
父::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');
}
公共职能
{
$mail=$this->arguments['mail'];
$type=$this->arguments['type']??'web';
// ...  
}

另外,

  • 如果不需要使用render()(例如,除非您需要访问$this变量),出于性能原因,您可能需要切换到renderStatic()(另请参见此说明)
  • TYPO3Fluid\Fluid\Core\ViewHelper
    中的类继承,而不是从
    TYPO3\CMS\Fluid\Core\ViewHelper
    中继承:
//使用TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
使用TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;

文件:

更改日志:

  • (10人)

您正在使用导致此错误的其他扩展,例如:

如果ViewHelper中有参数,则可以将其作为流体模板中的参数发送。在TYPO3中,当
render()
函数中没有关于参数的注释时,会引发此错误。你必须包括它们

例如:

<?php

namespace VENDOR\ExtensionName\ViewHelpers;

class ExampleViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper
{

 /**
  * 
  * @param int $foo
  * @return boolean
  */
 public function render($foo) {
     //function render lines    
     return $bar_boolean;
 }
}