Typo3: расширенный tt_content, Repo возвращает пустой QueryResultInterface - PullRequest
0 голосов
/ 25 мая 2018

Я расширил таблицу tt_content, связав ее с тегами расширения новостей.(Так что я могу пометить все элементы tt_content.)

Такие методы, как findAll и findByUid, всегда возвращают пустой QueryResultInterface.

Я создал расширение с помощью extensionbuilder.Я определил Хранилище в правом расширениях и игнорирую хранилище для собственных методов.

ext_typoscript_setup.txt:

config.tx_extbase {
  persistence {
    classes {

      EXAMP\ExampContentTagging\Domain\Model\ContentTagRelation {
        mapping {
          tableName = tt_content
          recordType = Tx_ExampContentTagging_ContentTagRelation
        }
      }

    }
  }
}

ContentTagRelationRepository.php:

<?php
namespace EXAMP\ExampContentTagging\Domain\Repository;

/**
 * The repository for ContentTagRelations
 */
class ContentTagRelationRepository extends \TYPO3\CMS\Extbase\Persistence\Repository
{
    /**
     * @var array
     */
    protected $defaultOrderings = array(
        'sorting' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING
    );



    /**
     * Find tt_content by a given pid
     *
     * @param array $includeIdList list of id s
     * @param array $excludeIdList list of id s
     * @return QueryInterface
     */
    public function findByTagIdList(array $includeIdList, array $excludeIdList = [])
    {
        $query = $this->createQuery();

        $query->getQuerySettings()->setRespectStoragePage(false);
        $query->getQuerySettings()->setRespectSysLanguage(false);

        return $query->execute();
}

TCA /Переопределяет / tt_content.php:

defined('TYPO3_MODE') || die();

if (!isset($GLOBALS['TCA']['tt_content']['ctrl']['type'])) {
    if (file_exists($GLOBALS['TCA']['tt_content']['ctrl']['dynamicConfigFile'])) {
        require_once($GLOBALS['TCA']['tt_content']['ctrl']['dynamicConfigFile']);
    }
    // no type field defined, so we define it here. This will only happen the first time the extension is installed!!
    $GLOBALS['TCA']['tt_content']['ctrl']['type'] = 'tx_extbase_type';
    $tempColumnstx_exampcontenttagging_tt_content = [];
    $tempColumnstx_exampcontenttagging_tt_content[$GLOBALS['TCA']['tt_content']['ctrl']['type']] = [
        'exclude' => true,
        'label'   => 'LLL:EXT:examp_content_tagging/Resources/Private/Language/locallang_db.xlf:tx_exampcontenttagging.tx_extbase_type',
        'config' => [
            'type' => 'select',
            'renderType' => 'selectSingle',
            'items' => [
                ['ContentTagRelation','Tx_exampContentTagging_ContentTagRelation']
            ],
            'default' => 'Tx_exampContentTagging_ContentTagRelation',
            'size' => 1,
            'maxitems' => 1,
        ]
    ];
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $tempColumnstx_exampcontenttagging_tt_content);
}


\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
    'tt_content',
    'tx_news_domain_model_tag'
);


$tmp_examp_content_tagging_columns = [

    'tx_news_domain_model_tag' => [
        'exclude' => true,
        'label' => 'LLL:EXT:examp_content_tagging/Resources/Private/Language/locallang_db.xlf:tx_exampcontenttagging_domain_model_contenttagrelation.tx_news_domain_model_tag',
        'config' => [
            'type' => 'select',
            'renderType' => 'selectMultipleSideBySide',
            'foreign_table' => 'tx_news_domain_model_tag',
            'MM' => 'tx_exampcontenttagging_contenttagrelation_tag_mm',
            'size' => 10,
            'autoSizeMax' => 30,
            'maxitems' => 9999,
            'multiple' => 0,
            'wizards' => [
                '_PADDING' => 1,
                '_VERTICAL' => 1,
                'edit' => [
                    'module' => [
                        'name' => 'wizard_edit',
                    ],
                    'type' => 'popup',
                    'title' => 'Edit', // todo define label: LLL:EXT:.../Resources/Private/Language/locallang_tca.xlf:wizard.edit
                    'icon' => 'EXT:backend/Resources/Public/Images/FormFieldWizard/wizard_edit.gif',
                    'popup_onlyOpenIfSelected' => 1,
                    'JSopenParams' => 'height=350,width=580,status=0,menubar=0,scrollbars=1',
                ],
                'add' => [
                    'module' => [
                        'name' => 'wizard_add',
                    ],
                    'type' => 'script',
                    'title' => 'Create new', // todo define label: LLL:EXT:.../Resources/Private/Language/locallang_tca.xlf:wizard.add
                    'icon' => 'EXT:backend/Resources/Public/Images/FormFieldWizard/wizard_add.gif',
                    'params' => [
                        'table' => 'tx_news_domain_model_tag',
                        'pid' => '###CURRENT_PID###',
                        'setValue' => 'prepend'
                    ],
                ],
            ],
        ],
    ],
];

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content',$tmp_examp_content_tagging_columns);

/* inherit and extend the show items from the parent class */

if (isset($GLOBALS['TCA']['tt_content']['types']['1']['showitem'])) {
    $GLOBALS['TCA']['tt_content']['types']['Tx_exampContentTagging_ContentTagRelation']['showitem'] = $GLOBALS['TCA']['tt_content']['types']['1']['showitem'];
} elseif(is_array($GLOBALS['TCA']['tt_content']['types'])) {
    // use first entry in types array
    $tt_content_type_definition = reset($GLOBALS['TCA']['tt_content']['types']);
    $GLOBALS['TCA']['tt_content']['types']['Tx_exampContentTagging_ContentTagRelation']['showitem'] = $tt_content_type_definition['showitem'];
} else {
    $GLOBALS['TCA']['tt_content']['types']['Tx_exampContentTagging_ContentTagRelation']['showitem'] = '';
}
$GLOBALS['TCA']['tt_content']['types']['Tx_exampContentTagging_ContentTagRelation']['showitem'] .= ',--div--;LLL:EXT:examp_content_tagging/Resources/Private/Language/locallang_db.xlf:tx_exampcontenttagging_domain_model_contenttagrelation,';
$GLOBALS['TCA']['tt_content']['types']['Tx_exampContentTagging_ContentTagRelation']['showitem'] .= 'tx_news_domain_model_tag';

$GLOBALS['TCA']['tt_content']['columns'][$GLOBALS['TCA']['tt_content']['ctrl']['type']]['config']['items'][] = ['LLL:EXT:examp_content_tagging/Resources/Private/Language/locallang_db.xlf:tt_content.tx_extbase_type.Tx_exampContentTagging_ContentTagRelation','Tx_exampContentTagging_ContentTagRelation'];

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr(
    '',
    'EXT:/Resources/Private/Language/locallang_csh_.xlf'
);

Главным образом для этой проблемы решение состоит в том, чтобы проверить, установлено ли правильное хранилище.Но я сделал это и до сих пор проблема.Поэтому я думаю, что проблема в tt_content.Но единственное, что я смог найти для этого, было:

«tt_content особенный».

Что не помогло.(Оффтоп: эта документация Typo3 сводит меня с ума каждый раз, когда я в нее заглядываю.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...