Extbase - 获取给定类别中的所有项目

时间:2018-03-21 11:55:21

标签: typo3 extbase

我对Typo3和Extbase很新,所以我现在真的很丢失......我们有这样的类别树:

+ root
++ chairs
 ++ wooden chairs
  + plastic chairs (2)
  + generic chairs (0)
  + broken chairs
  ++ slightly broken chairs (3)
   + heavily broken chairs (1)
   + chairs that kill (10)

我们有一个数据集(自定义扩展和数据库表等),每个记录都可以分配到一个类别,什么是typo3的内置功能。我们还有一个Repository类,它实现了findByCategory()方法。

我们希望列出自定义表中的所有记录,这些记录是给定类别的成员。因此,在上述示例的情况下,findByCategory('broken chairs')应该产生14个项目findByCategory('chairs') 16。

我们可以使用任何助手/实用程序类来获取给定父类别中的所有类别吗?

1 个答案:

答案 0 :(得分:0)

我认为你必须扩展CategoryRepository并实现自己的方法。该方法可能如下所示:

    /**
     * Finds categories based on their parents, possibly taking categories2skip into account
     *
     * @param integer $parent
     * @param array $categories2skip
     *
     * @return object
     */
    public function findByParent($parent, $categories2skip = array()) {
        $query = $this->createQuery();
        $constraints = array();
        $constraints[] = $query->equals('parent', $parent);
        if (count($categories2skip) > 0) {
            $constraints[] = $query->logicalNot($query->in('uid', $categories2skip));
        }
        $query->matching(
            $query->logicalAnd($constraints)
        );
        $result = $query->execute();
        return $result;
    }