Выберите фильтрацию Flexform в репозитории - PullRequest
0 голосов
/ 09 января 2019

В моей 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.

...