在存储库中选择Flexform过滤

时间:2019-01-09 14:28:22

标签: typo3 extbase typo3-8.x typo3-extensions

在我的flexform中,我有一个选择字段(典型值)。在模型中还有一个字段(典型值)。如何在此处扩展存储库以过滤值(典型值)?

存储库:https://pastebin.com/MuWtaK7d

public function findDemanded($demand) {
    $query = $this -> createQuery();
    $query -> getQuerySettings() -> setRespectStoragePage(FALSE);
    #$query -> setOrderings($this -> createOrdering());
    $constraints = $this -> createConstraintsFromDemand($query, $demand);
    if (!empty($constraints)) {
        $query -> matching(
            $query -> logicalAnd($constraints)
        );
    }
    return $query -> execute();
}

protected function createConstraintsFromDemand(\TYPO3\CMS\Extbase\Persistence\QueryInterface $query, $demand) {
    $constraints = array();

    $categories = $demand -> getCategories();
    if ((!empty($categories))) {
        $categoryConstraints = array();
        $categories = \TYPO3\CMS\Core\Utility\GeneralUtility::intExplode(',', $categories, TRUE);
        foreach ($categories as $category) {
            $categoryConstraints[] = $query -> contains('categories', $category);
        }
        $constraints = $query -> logicalOr($categoryConstraints);
    }
    return $constraints;
}

控制器:https://pastebin.com/wtd25Zxb

public function listAction()
{
    $demand = $this -> createDemandObjectFromSettings($this -> settings);
    $entries = $this -> xxxRepository -> findDemanded($demand);
    $this -> view -> assign('xxx', $entries);
}

protected function createDemandObjectFromSettings($settings)
{
    $demand = $this->objectManager->get('xxx\\xxx\\Domain\\Model\\xxx'); 
    $demand->setCategories($settings['categories']);
    $demand->setType($settings['typ']);
    return $demand;
}

感谢您的帮助。我使用TYPO3 8.7。

0 个答案:

没有答案