Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3计算具有约束的对象并在流体模板中显示结果_Typo3_Fluid_Extbase_Typo3 7.6.x_Viewhelper - Fatal编程技术网

TYPO3计算具有约束的对象并在流体模板中显示结果

TYPO3计算具有约束的对象并在流体模板中显示结果,typo3,fluid,extbase,typo3-7.6.x,viewhelper,Typo3,Fluid,Extbase,Typo3 7.6.x,Viewhelper,我用扩展生成器构建了一个扩展,它可以处理对象,对象可以是项或项目 对象有一个字段状态,该字段状态有4个选项,并用整数3=已售出填充 对象可以作为项目进行签名,在这种情况下,它有一个用于isproject的布尔值1和一个字段items,其中相关对象为items 这一切都很好,我可以用我的流体模板和{object.items}在项目中迭代,显示项目中的项目数 以同样的方式,我应该只显示售出物品的数量。。。 {object.items}这显然不起作用,只是为了表达想法 使用{object}我看到为所有

我用扩展生成器构建了一个扩展,它可以处理对象,对象可以是项或项目

对象有一个字段状态,该字段状态有4个选项,并用整数3=已售出填充

对象可以作为项目进行签名,在这种情况下,它有一个用于isproject的布尔值1和一个字段items,其中相关对象为items

这一切都很好,我可以用我的流体模板和{object.items}在项目中迭代,显示项目中的项目数

以同样的方式,我应该只显示售出物品的数量。。。 {object.items}这显然不起作用,只是为了表达想法

使用{object}我看到为所有项定义的字段状态。。。
由于我不知道如何实现这一点,我可能遗漏了一些重要信息

您可以在控制器中计算这些信息,或者使用GroupedFor ViewHelper

如前一个答案所示,您可以使用GroupedFor ViewHelper实现此目的。但是在流体模板中使用它会有太多的逻辑,这就是为什么应该在控制器、模型或存储库中执行此操作的原因

示例:向对象模型添加Getter

/**
 * @return int
 */
public function getSoldItems() {
    $soldCount = 0;
    foreach($this->getItems() as $item) {
        // 0 = sold
        if($item->getStatus()===0) {
            $soldCount++;
        }
    }
    return $soldCount;
}
在fluid中,可以使用{object.soldItems}调用Getter


一个更好的性能解决方案,尤其是对于延迟加载子对象,是使用存储库计数。为此,您必须在存储库中创建一个函数,并在Getter函数中调用它。要使用公共存储库方法创建查询,您需要项与对象的反向关系。否则,您必须自己编写带有语句的查询。

@Paul_Beck,在控制器中计数听起来不错,您如何实现这一点。。。GroupedFor似乎提供了一个数组,这并不是真正需要的,我有一个对象,其中的字段项依次具有字段状态,应该在流体中计数和显示。。。施韦林!!使用GroupedFor viewhelper,您可以对孩子进行排序,然后按数组中的状态计数对他们进行计数。但这几乎是流体的逻辑,应该属于控制器内部。在控制器中,您可以在存储库中使用PHP或SQL来计算项目。我是一个初学者,我不知道如何进一步了解您的信息。。。你知道一些代码示例吗?几分钟前在Skype上描述过。玩得开心:-保罗,为了更好的实践,你是否愿意在对象模型中添加解决方案作为答案,以便我可以将其作为接受答案签名。。。否则我自己来供应