更新TYPO3后,我得到一个TYPO3Fluid\Fluid\Core\ViewHelper\Exception
“未声明的参数传递给ViewHelper ...有效的参数是。”
答案 0 :(得分:1)
这可能是由于扩展使用的功能已被删除。仅使用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';
// ...
}
另外,
TYPO3Fluid\Fluid\Core\ViewHelper
而不是TYPO3\CMS\Fluid\Core\ViewHelper
中的类继承:// use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper;
use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
文档:
更改日志:
答案 1 :(得分:0)
您使用的其他扩展程序会导致此错误,例如:https://github.com/lochmueller/calendarize/issues/280
如果ViewHelper中有参数,则可以将它们作为来自Fluid Template的参数发送。在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;
}
}