首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递给ViewHelper的未声明参数

传递给ViewHelper的未声明参数
EN

Stack Overflow用户
提问于 2020-03-15 19:42:52
回答 1查看 679关注 0票数 0

我将一个网站从TYPO3 v7升级到v9,现在我得到了以下错误:

未声明的参数传递给ViewHelper \ViewHelpers\MyViewHelper: value,list。有效的论点是:

我当前的ViewHelper如下所示:

代码语言:javascript
复制
<?php

namespace VP\News\ViewHelpers;

/**
* @package TYPO3
* @subpackage Fluid
*/

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

/**
* @param mixed $value value
* @param mixed $list list
* @return boolean
*/

public function render($value, $list) {
    if (!is_array($list)) {
        $list = str_replace(' ', '', $list);
        $list = explode(',', $list);
    }
    return in_array($value, $list);
}
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-15 20:29:48

在v7和v9 ViewHelpers ( TYPO3流体 )之间,有些事情发生了变化。

应该从抽象类TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper扩展➊。

ViewHelper必须注册传递给➋的参数。

您的ViewHelper看起来更像是条件-视图帮助程序,而不是抽象视图帮助程序。

第一点是不言而喻的.只需更改基类的名称(完全限定的类名)。对于第二点,您可以使用额外的方法initializeArguments()。例如:

代码语言:javascript
复制
public function initializeArguments(): void
{
  parent::initializeArguments();
  $this->registerArgument('value', 'type', 'description');
  ...
}

您可以找到一个示例这里

但是,您的ViewHelper似乎检查了一个条件(“该元素在列表中吗?”、“然后.”、“否则.”)。因此,最好实现一个条件-ViewHelper。

这种类型的ViewHelper扩展了类TYPO3Fluid\Fluid\Core\ViewHelper\AbstractConditionViewHelper,并使用方法verdict()而不是render()renderStatic()来计算条件。

您可以找到一个简单条件的示例-ViewHelper 这里

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

https://stackoverflow.com/questions/60696904

复制
相关文章

相似问题

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