【问题标题】:Typo3 8.7.x / Extbase: How to get the sys_category of a pageTypo3 8.7.x / Extbase:如何获取页面的 sys_category
【发布时间】:2018-08-28 12:03:39
【问题描述】:

有人可以告诉我如何在我的扩展程序控制器上获取页面的 sys_category 吗?

public function listAction()
{
//get the sys categories of (a) page
???

谢谢

【问题讨论】:

标签: php typo3 php-7 extbase typo3-8.x


【解决方案1】:

现在我用 QueryBuilder 编写了一个解决方案。也许它可以帮助别人:

在我的扩展中->控制器

/**
 * pagesRepository
 *
 * @var \TYPO3\CMS\Frontend\Page\PageRepository
 * @inject
 */
protected $pageRepository = null;

在我的扩展->控制器->一些动作中:

    foreach ($GLOBALS['TSFE']->rootLine as $page) {

        $pageObject = $this->pageRepository->getPage($page['uid']);

        if ($pageObject['categories']) {
            $queryBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\ConnectionPool::class)->getQueryBuilderForTable('sys_category');
            $query = $queryBuilder->select('sys_category.uid', 'sys_category.title')->from('sys_category');
            $query->join(
                'sys_category',
                'sys_category_record_mm',
                'mm',
                $queryBuilder->expr()->andX(
                    $queryBuilder->expr()->eq('mm.uid_local', $queryBuilder->quoteIdentifier('sys_category.uid')),
                    $queryBuilder->expr()->in('mm.uid_foreign', $page['uid']),
                    $queryBuilder->expr()->eq('mm.tablenames', $queryBuilder->quote('pages')),
                    $queryBuilder->expr()->eq('mm.fieldname', $queryBuilder->quote('categories'))
                )
            );

            $result = $query->execute()->fetchAll();

            break;
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多