TYPO3 Extbase:在控制器中设置setDefaultOrderings

7

我有一个使用extbase/fluid框架的扩展程序,其中包含一个主对象"Etikett",与一个子对象"Land"存在关联。我想对输出进行排序,因此在我的Etikett控制器中使用了setDefaultOrderings方法,但是没有得到任何结果,为什么呢?

$this->etikettRepository->setDefaultOrderings(array('land.laendername' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING));
$etiketts = $this->etikettRepository->findAll();

Relation


使用以下代码得到相同的空结果: $query = $this->createQuery(); $query->equals('land', $land); $query->setOrderings(array('region.regionenname' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING)); - Ralf
信息:土地具有一个名为regionenname的属性区域。 - Ralf
所以你的仓库没有返回任何东西吗?还是排序不起作用?如果是前者,请确保在您的插件TypoScript中设置存储PID,或在您的存储库中禁用respectStoragePid。 - Daniel
谢谢Daniel,是的!这是第一个,但是它有点复杂,因为我有一个单独的系统文件夹来处理我的区域,并只添加了标签的文件夹!你让我的一天很愉快! ;) - Ralf
很高兴能够帮忙。我会将其作为答案提供,这样您就可以接受它,使问题标记为已回答。 - Daniel
好的,当然可以!;)我想把它标记为有用的,但首先我需要15个声望:D - Ralf
2个回答

7

您可以在存储库中设置默认排序方式。

class etikettRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {
    /*
     * Default ordering for all queries created by this repository
     */
    protected $defaultOrderings = array(
        'your_field_name' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
    );

    public function findAll(){
        //Your query
        $query->getQuerySettings()->setRespectStoragePage(FALSE);
    }
}

5
请确保在您的插件Typoscript中设置了存储PID,或在您的存储库中禁用respectStoragePid。 =)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接