TYPO3 - как использовать внутреннего пользователя в качестве свойства модели? - PullRequest
0 голосов
/ 21 февраля 2020

Я определил модель в своем расширении TYPO3, где мне нужно одно свойство, относящееся к бэкэнд-пользователю, который выполнил какое-то определенное действие с ним в бэкэнд-модуле. К сожалению, я не совсем уверен, как это реализовать, так как с одной стороны, похоже, нет класса пользовательской модели бэкэнда, на который я могу сослаться, с другой стороны, определяющего TCA со ссылкой на таблицу be_users, подобную этой

'respondentUser' => [
    'label' => 'Respondent',
    'config' => [
        'type' => 'select',
        'foreign_table' => 'be_users',
        'maxitems' => 1
    ]
],

возвращает только объекты с пустым пользовательским значением (пользовательский UID установлен мной). На первый взгляд более очевидный тип user оказался не тем, что мне было нужно. Есть ли какая-либо поддержка отношений модели с пользователем?

Если нет, я мог бы работать с UID пользователя как целое число. Я знаю, что могу получить его через $GLOBALS['BE_USERS']->user['uid'], но как мне получить пользовательские данные (если быть точным, имя пользователя) из UID?

1 Ответ

1 голос
/ 22 февраля 2020

Проверьте свой TCA https://docs.typo3.org/m/typo3/reference-tca/9.5/en-us/ColumnsConfig/Type/Select.html - для type:select a renderType является обязательным.

Относительно вашего wi sh для модели BackendUser: есть \TYPO3\CMS\Extbase\Domain\Model\BackendUser ( и его \TYPO3\CMS\Extbase\Domain\Repository\BackendUserRepository). Таким образом, вы можете просто уйти от определения свойства вашей модели respondentUser как \TYPO3\CMS\Extbase\Domain\Model\BackendUser, и ваш репозиторий Extbase выполнит связывание данных.

Для евангелистов моделирования домена вы должны переопределить его в своем домене и проверить таблица <> Отображение класса Extbase здесь: https://docs.typo3.org/m/typo3/book-extbasefluid/master/en-us/6-Persistence/5-modeling-the-class-hierarchy.html. Если вы go по этой дороге, посмотрите https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/FilesAndLocations/Index.html#ext -typoscript-setup-typoscript и помните, что ext_typoscript_setup имеет недостатки. Я бы использовал \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup().

Тем не менее, абсолютно не обязательно использовать Extbase в TYPO3. Вы можете получить запись be_user из вашего be_user.uid с помощью https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/QueryBuilder/Index.html, чтобы получить необработанную запись. Чаще всего этого достаточно для работы с ним.

...